Comprobar si una cadena contiene otra cadena dos veces

Científico loco :

Tengo un bucle, que itera a través de una lista de mapas y ahora quiere comprobar cada entrada de la lista de mapas si contiene una determinada cadena más de una vez y luego eliminar todas las cadenas excepto el primero que se produce pero no tengo ni idea de cómo hacerlo .

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);
    }
}

Estoy agradecido por cada idea.

Andreas:

Para ver si keycontiene una cadena de sal menos dos veces, y para eliminar la segunda aparición, utilice indexOfdos veces, con la segunda llamada de iniciar la búsqueda después de la primera aparición:

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
}

Prueba

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

ACTUALIZAR

Si desea eliminar todos los duplicados, es decir, dejar únicamente la primera vez que aparece, seguir buscando. Para un mejor rendimiento de la construcción de la nueva cadena, utilice 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());
}

Prueba

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

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=334033&siteId=1
Recomendado
Clasificación