[Preguntas básicas de la entrevista] Elimina los caracteres especificados de JAVA-String (11 métodos)

El primer método recorre de adelante hacia atrás a través de un bucle, si no es el carácter a eliminar, agréguelo a la cadena procesada, el código es el siguiente:

public String deleteCharString0(String sourceString, char chElemData) {
    
    
    String deleteString = "";
    for (int i = 0; i < sourceString.length(); i++) {
    
    
        if (sourceString.charAt(i) != chElemData) {
    
    
            deleteString += sourceString.charAt(i);
        }
    }
    return deleteString;
}

El segundo método: determinar el índice de posición del carácter que se eliminará mediante un bucle y luego concatenar las subcadenas dividiendo la cadena. Tenga en cuenta que no hay ningún carácter para eliminar en la última subcadena y la cadena de origen. El código es el siguiente:

public String deleteCharString1(String sourceString, char chElemData) {
    
    
    String deleteString = "";
    int iIndex = 0;
    for (int i = 0; i < sourceString.length(); i++) {
    
    
        if (sourceString.charAt(i) == chElemData) {
    
    
            if (i > 0) {
    
    
                deleteString += sourceString.substring(iIndex, i);
            }
            iIndex = i + 1;
        }
    }
    if (iIndex <= sourceString.length()) {
    
    
        deleteString += sourceString.substring(iIndex, sourceString.length());
    }
    return deleteString;
}

El tercer método: el principio es el mismo que el anterior, excepto que la función en la clase String se usa para encontrar la posición del carácter que se va a eliminar. La eficiencia no es tan alta como la anterior. El código es el siguiente:

public String deleteCharString2(String sourceString, char chElemData) {
    
    
    String deleteString = "";
    int iIndex = 0;
    int tmpCount = 0;
    do {
    
    
        tmpCount = sourceString.indexOf(chElemData, iIndex);
        if (tmpCount > 0) {
    
    
            deleteString += sourceString.substring(iIndex, tmpCount);
        }
        if (tmpCount != -1) {
    
    
            iIndex = tmpCount + 1;
        }
    } while (tmpCount != -1);
    if (iIndex <= sourceString.length()) {
    
    
        deleteString += sourceString.substring(iIndex, sourceString.length());
    }
    return deleteString;
}

El cuarto método, el principio es básicamente el mismo que el anterior, pero esta vez se adopta el orden inverso, hay más pozos aquí, debemos prestar atención al rango de valores del índice y si es legal. El código es el siguiente:

public String deleteCharString3(String sourceString, char chElemData) {
    
    
    String deleteString = "";
    int iIndex = sourceString.length();
    int tmpCount = 0;
    do {
    
    
        tmpCount = sourceString.lastIndexOf(chElemData, iIndex - 1);
        if (tmpCount < sourceString.length() && tmpCount >= 0) {
    
    
            deleteString = sourceString.substring(tmpCount + 1, iIndex) + deleteString;
        }
        if (tmpCount != -1) {
    
    
            iIndex = tmpCount;
        }
    } while (tmpCount != -1);
    if (iIndex >= 0) {
    
    
        deleteString = sourceString.substring(0, iIndex) + deleteString;
    }

    return deleteString;
}

El quinto método: mediante el uso del método regular y la función replaceAll, este método debe prestar atención a los caracteres especiales, como el carácter "." En el regular, que debe escaparse. El código es el siguiente:

public String deleteCharString4(String sourceString, char chElemData) {
    
    
    String deleteString = "";
    final String strTable = "|^$*+?.(){}\\";
    String tmpRegex = "["; 
    for (int i = 0; i < strTable.length(); i++) {
    
    
        if (strTable.charAt(i) == chElemData) {
    
    
            tmpRegex += "\\";
            break;
        }
    }
    tmpRegex += chElemData + "]";
    deleteString = sourceString.replaceAll(tmpRegex, "");
    return deleteString;
}

El sexto método: divide la cadena en varias subcadenas de manera regular, y luego concatena las subcadenas, el código es el siguiente:

public String deleteCharString5(String sourceString, char chElemData) {
    
    
    String deleteString = "";
    final String strTable = "|^$*+?.(){}\\";
    String tmpRegex = "["; 
    for (int i = 0; i < strTable.length(); i++) {
    
    
        if (strTable.charAt(i) == chElemData) {
    
    
            tmpRegex += "\\";
            break;
        }
    }
    tmpRegex += chElemData + "]";
    String[] tmpStringArray = sourceString.split(tmpRegex);
    for (int i = 0; i < tmpStringArray.length; i++) {
    
    
        deleteString += tmpStringArray[i];
    }
    return deleteString;
}

El séptimo método: programe una secuencia legible de caracteres y reemplácelos con métodos en la clase String. El código es el siguiente:

public String deleteCharString6(String sourceString, char chElemData) {
    
    
    String tmpString = "";
    tmpString += chElemData;
    tmpString.subSequence(0, 0);
    String deleteString = "";
    deleteString = sourceString.replace(tmpString, deleteString.subSequence(0, 0));
    return deleteString;
}

El octavo método: convierte la cadena original en una matriz de caracteres, y luego el principio es similar al principio de ordenación por inserción directa, el código es el siguiente:

public String deleteCharString7(String sourceString, char chElemData) {
    
    
    String deleteString = "";
    char[] Bytes = sourceString.toCharArray();
    int iSize = Bytes.length;
    for (int i = Bytes.length - 1; i >= 0; i--) {
    
    
        if (Bytes[i] == chElemData) {
    
    
            for (int j = i; j < iSize - 1; j++) {
    
    
                Bytes[j] = Bytes[j + 1];
            }
            iSize--;
        }
    }
    for (int i = 0; i < iSize; i++) {
    
    
        deleteString += Bytes[i];
    }
    return deleteString;
}

El noveno método: el principio es similar al primer método. Esta vez, el método append en la clase stringBuffer se usa para la operación. Creo que la eficiencia debería ser mayor que el primer método.

public String deleteCharString8(String sourceString, char chElemData) {
    
    
    StringBuffer stringBuffer = new StringBuffer("");
    for (int i = 0; i < sourceString.length(); i++) {
    
    
        if (sourceString.charAt(i) != chElemData) {
    
    
            stringBuffer.append(sourceString.charAt(i));
        }
    }
    return stringBuffer.toString();
}

El décimo método: use el método replace e indexOf en la clase stringBuffer ( _ método recopilar deliberadamente), el código es el siguiente:

public String deleteCharString9(String sourceString, char chElemData) {
    
    
    String tmpString = "";
    tmpString += chElemData;
    StringBuffer stringBuffer = new StringBuffer(sourceString);
    int iFlag = -1;
    do {
    
    
        iFlag = stringBuffer.indexOf(tmpString);
        if (iFlag != -1) {
    
    
            stringBuffer = stringBuffer.replace(iFlag, iFlag + 1, "");
        }
    } while (iFlag != -1);
    return stringBuffer.toString();
}

El undécimo método: use deleteCharAt e indexOf en la clase stringBuffer para eliminar directamente

public String deleteCharString10(String sourceString, char chElemData) {
    
    
    String tmpString = "";
    tmpString += chElemData;
    StringBuffer stringBuffer = new StringBuffer(sourceString);
    int iFlag = -1;
    do {
    
    
        iFlag = stringBuffer.indexOf(tmpString);
        if (iFlag != -1) {
    
    
            stringBuffer.deleteCharAt(iFlag);
        }
    } while (iFlag != -1);
    return stringBuffer.toString();
}

Captura de pantalla del programa en ejecución:

Inserte la descripción de la imagen aquí

Cómo eliminar los caracteres especificados en JAVA String

Con la ayuda del método jdk java.lang.String.replace (CharSequence, CharSequence)
Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_36963950/article/details/107380223
Recomendado
Clasificación