[Perguntas básicas da entrevista] Exclua os caracteres especificados do JAVA-String (11 métodos)

O primeiro método atravessa de frente para trás por meio de um loop, se não for o caractere a ser excluído, adicione-o à string processada, o código é o seguinte:

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

O segundo método - determina o índice de posição do caractere a ser excluído em loop e, em seguida, concatenar as substrings dividindo a string. Observe que não há nenhum caractere a ser excluído na última substring e na string de origem. O código é o seguinte:

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

O terceiro método - o princípio é o mesmo acima, exceto que a função na classe String é usada para encontrar a posição do caractere a ser excluído. A eficiência não é tão alta quanto o acima. O código é o seguinte:

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

O quarto método - o princípio é basicamente igual ao anterior, mas desta vez a ordem inversa é adotada, há mais pontos aqui, devemos prestar atenção à faixa de valores do índice e se ele é legal. O código é o seguinte:

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

O quinto método - usando o método regular e a função replaceAll, esse método deve prestar atenção aos caracteres especiais, como o caractere "." No regular, que precisa ser escapado. O código é o seguinte:

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

O sexto método divide a string em várias substrings de maneira regular e, em seguida, concatena as substrings. O código é o seguinte:

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

O sétimo método - programe uma sequência legível de caracteres e substitua-os por métodos da classe String. O código é o seguinte:

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

O oitavo método - converte a string original em uma matriz de caracteres e, em seguida, o princípio é semelhante ao princípio da classificação por inserção direta, o código é o seguinte:

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

O nono método - o princípio é semelhante ao primeiro método. Desta vez, o método append na classe stringBuffer é usado para a operação. Eu acho que a eficiência deve ser maior do que o primeiro 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();
}

O décimo método - use o método replace e indexOf na classe stringBuffer ( _ método coletar deliberadamente), o código é o seguinte:

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

O décimo primeiro método - use deleteCharAt e indexOf na classe stringBuffer para excluir diretamente

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 tela do programa em execução:

Insira a descrição da imagem aqui

Como remover os caracteres especificados na string JAVA

Com a ajuda do método jdk java.lang.String.replace (CharSequence, CharSequence)
Insira a descrição da imagem aqui

Insira a descrição da imagem aqui

Acho que você gosta

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