String.replace结果被忽略了吗?

时间:2016-03-16 00:22:25

标签: java string replace

所以我正在使用IntelliJ,突出显示替换流行语。大多数技巧都在我的脑海中,所以我忽略了它们,但我得到的是这个结果是string.replace的结果被忽略了。为什么呢?

我需要(string = string.replace(string.charAt(i));)吗?

import java.util.Scanner;

public class PhoneNumberDecipher {
    public static String phoneNumber;
    public static String Decipher(String string) {
        string = phoneNumber;
        for(int i =0; i<=phoneNumber.length(); i++) {
            if(string.equalsIgnoreCase("A")
               ||string.equalsIgnoreCase("B")
               ||string.equalsIgnoreCase("C")) {
                string.replace(string.charAt(i),'2')
            }
            else if(string.equalsIgnoreCase("D")
                    ||string.equalsIgnoreCase("E")
                    ||string.equalsIgnoreCase("F")) {
                string.replace(string.charAt(i),'3');
            }
            else if(string.equalsIgnoreCase("G")
                    ||string.equalsIgnoreCase("H")
                    ||string.equalsIgnoreCase("I")) {
                string.replace(string.charAt(i),'4');
            }
            else if(string.equalsIgnoreCase("J")
                    ||string.equalsIgnoreCase("K")
                    ||string.equalsIgnoreCase("L")) {
                string.replace(string.charAt(i),'5');
            }
            else if(string.equalsIgnoreCase("M")
                    ||string.equalsIgnoreCase("N")
                    ||string.equalsIgnoreCase("O")) {
                string.replace(string.charAt(i),'6');
            }
            else if(string.equalsIgnoreCase("P")
                    ||string.equalsIgnoreCase("Q")
                    ||string.equalsIgnoreCase("R")
                    || string.equalsIgnoreCase("S")) {
                string.replace(string.charAt(i),'7');
            }
            else if(string.equalsIgnoreCase("T")
                    ||string.equalsIgnoreCase("U")
                    ||string.equalsIgnoreCase("V")) {
                string.replace(string.charAt(i),'8');
            }
            else if(string.equalsIgnoreCase("W")
                    ||string.equalsIgnoreCase("X")
                    ||string.equalsIgnoreCase("Y")
                    ||string.equalsIgnoreCase("Z")) {
                string.replace(string.charAt(i),'9');
            }
        }

        return string;
    }

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.println("Please Enter a Phone Number you Wish to Decipher...");
        phoneNumber = input.nextLine();

        System.out.print(Decipher(phoneNumber));
    }
}

4 个答案:

答案 0 :(得分:5)

String个对象为immutable

来自docs

  

public String replace(char oldChar,char newChar)

     

返回一个字符串,该字符串是用newChar替换此字符串中所有出现的oldChar而生成的。

希望这有帮助。

答案 1 :(得分:2)

IntelliJ抱怨你正在调用一个方法,它的唯一作用是返回一个值(String.replace),但你忽略了那个值。该计划目前没有做任何事情,因为你丢掉了它所做的所有工作。

您需要使用返回值。

那里还有其他的bug。如果你使用这些代码,你可能会进一步发展:

StringBuilder convertedPhoneNumber = new StringBuilder();
// Your loop begins here
char curCharacter = phoneNumber.charAt(i);
if (curCharacter == 'a') {
  convertedPhoneNumber.append("2");
}
// More conditional logic and rest of loop goes here.

return convertedPhoneNumber.toString();

答案 2 :(得分:1)

使用该语句 string = string.replace(string.charAt(i));

为什么?字符串是一个不变的对象。查看this thread以获得完整的说明。这是Java的基础部分,因此请确保您学习得很好。

答案 3 :(得分:1)

我有同样的问题,但是我这样做是这样的:

String newWord = oldWord.replace(oldChar,newChar); 
相关问题