如何在java中替换字符串中的特定字母?

时间:2016-11-02 13:45:30

标签: java

所以我在更换字符方面遇到了麻烦,但找到它们已经完成了。我的问题是代替复制只有一个代码是复制多个。

String NewText = "";
for( int i=0; i<Str.length(); i++ ) {
    if( Str.charAt(i) == 'a' ) {
        counter++;
        String newText = Str.replace('a', '@');
        NewText=newText;
    } else if( Str.charAt(i) == 'e' ) {
        counter1++;
        String newText1 = Str.replace('e','3');
        NewText=NewText+newText1;
    }
}

System.out.println("Total vowels: "+counterTotal+" | "+counter5+ " y's");
System.out.println(NewText+" | Original text: "+Str);

我的问题是NewText变量保存所有文本而不仅仅是更改的字母。通过反复试验,我将不胜感激任何帮助,以改善此代码,使其正常工作。想象一下代码的其余部分,它只是替换了元音,但我怎样才能让我的代码检查大写字母而不复制粘贴?

2 个答案:

答案 0 :(得分:0)

你应该试试这个:

public static void main(String[] args) {
    String testStr = "TEST";
    int count = count(testStr,'T');
    String newStr = testStr.replaceAll("T", "3");
    System.out.println("Total T: " + count);
    System.out.println("Old:" + testStr +" | New: "+newStr);
}

public static int count(String str, char letter){
    int counter = 0;
    for( int i=0; i<str.length(); i++ ) {
        if( Character.toUpperCase(str.charAt(i)) == Character.toUpperCase(letter)) {
            counter++;
        }
    }
    return counter;
}

方法count将计算给定字母在给定str中出现的次数。尽管有字母大小写,我们在if中比较toUpperCase。现在你重用其他字母的代码,你不需要重复你的for循环,只需调用方法。在main方法中,我们调用count,然后使用replaceAll替换字母,替换给定参数的String中的所有字符。 String类是不可变的,因此,它返回一个新的String。这是输出:

Total T: 2
Old:TEST | New: 3ES3

这解决了你的问题吧?

答案 1 :(得分:-2)

public static void main (String[]args){

    String Str = "AEAEA";
    int counter = 0;
    int counter1 = 0;
    String NewText = null;
    for (int i = 0; i < Str.length(); i++) {
        if (Str.charAt(i) == 'A') {
            counter++;
            String newText = Str.replace('A', '@');
            System.out.println(newText);
            NewText = newText;

        } else if (Str.charAt(i) == 'E') {
            counter1++;
            String newText1 = Str.replace('E', '3');
            NewText = NewText + newText1;
        }

    }
    System.out.println("Nw " + NewText);
    //System.out.println(NewText+" | Original text: "+Str);

}