文字列は二回、別の文字列が含まれているかどうかをチェック

マッドサイエンティスト :

私はmaplistを反復処理するループのために持っていると、今私はmaplistのすべてのエントリをチェックしたい、それが複数回ある特定の文字列が含まれている場合、その後に発生最初のものを除くすべての文字列を削除しますが、私はそれを行う方法を見当もつかない。

for (Map<String, String> entry : mapList) {
    String line = "";
    for (String key : entry.keySet()) {
        if (StringUtils.containsAny(key, "5799"){
            line += entry.get(key) + "|";
        }
        list1.add(line);
    }
}

私はすべてのアイデアのために感謝しています。

アンドレアス:

かどうかを確認するにはkey、文字列が含まれているs少なくとも二回、第二の発生を削除するために、使用indexOf最初に出現した後に検索を開始する2番目の呼び出しで、二回:

static String removeSecond(String key, String s) {
    int idxFirst = key.indexOf(s);
    if (idxFirst != -1) {
        int idxSecond = key.indexOf(s, idxFirst + s.length());
        if (idxSecond != -1) {
            return key.substring(0, idxSecond) +
                   key.substring(idxSecond + s.length());
        }
    }
    return key; // Nothing to remove
}

テスト

System.out.println(removeSecond("mississippi", "ss")); // prints: missiippi
System.out.println(removeSecond("mississippi", "i"));  // prints: missssippi
System.out.println(removeSecond("mississippi", "pp")); // prints: mississippi

更新

あなたはすべての重複を削除したい場合、つまり、キープ検索を最初のオカレンスだけを残します。新しい文字列を構築する最良のパフォーマンスを得るために、使用StringBuilder

static String removeDuplicates(String key, String s) {
    int idx = key.indexOf(s);
    if (idx == -1)
        return key; // Nothing to remove
    StringBuilder buf = new StringBuilder();
    int prev = 0;
    for (int start = idx + s.length(); (idx = key.indexOf(s, start)) != -1; prev = start = idx + s.length())
        buf.append(key.substring(prev, idx));
    return (prev == 0 ? key : buf.append(key.substring(prev)).toString());
}

テスト

System.out.println(removeDuplicates("mississippi", "ss")); // prints: missiippi
System.out.println(removeDuplicates("mississippi", "i"));  // prints: misssspp
System.out.println(removeDuplicates("mississippi", "s"));  // prints: misiippi
System.out.println(removeDuplicates("mississippi", "ab")); // prints: mississippi

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=334030&siteId=1