为什么我不能用Java删除WhiteSpaces?

时间:2013-01-26 17:54:41

标签: java string whitespace

我拼命想要从字符串中移除空格(我想要能够转换为int),但我似乎无法将其完全正确。

String input;
if(GamePlay.GameStart == true){
    input = Terminal.askString("Welcome to MASTERMIND! \n Please Give in Your Game Attributes \n");
            input.replaceAll("\\s","");
}else
    input = Terminal.askString(""); 
if (input.equals("Quit") || input.equals("quit")){
    Quit();

}
else if(GamePlay.GameStart == true){

    System.out.println(input); .......(code follows)

你能告诉我,我做错了什么? PS:我试过\ W“和\ S”太

4 个答案:

答案 0 :(得分:6)

替换

input.replaceAll("\\s","");

input = input.replaceAll("\\s","");

它会起作用,因为字符串是不可变的,所以replaceAll()不会改变你的字符串对象,它会返回一个新字符串。因此,您将变量input分配给input.replaceAll("\\s","");

返回的字符串

此外,您应该尝试遵循Java命名约定,并使字段和变量以小写字母开头。

而且,您也可以替换

if(GamePlay.GameStart == true) {

if(GamePlay.GameStart) {

因为在您的版本中,您将GamePlay.GameStart的值与true进行比较,并且只有if块才会执行true块,而在我的版本中,如果ìfGamePlay.GameStart,则会执行true块(尽管编译器可能会将其优化掉)。

另一方面,您也可以替换

if (input.equals("Quit") || input.equals("quit")){

if (input.equalsIgnoreCase("Quit")) {

因为,我认为这很明显。

答案 1 :(得分:4)

字符串是不可变的。您需要指定由String返回的新创建的replaceAll的结果:

input = input.replaceAll("\\s","");

答案 2 :(得分:0)

input.replaceAll("\\s","");返回删除了空格的字符串。但是如果你没有引用它,你将无法看到结果。你可能意味着:

input = input.replaceAll("\\s","");

答案 3 :(得分:-1)

对于初学者来说,这是一个非常常见的错误。

正如其他人所提到的,您需要知道replaceAll返回一个新字符串并且不会更改当前字符串,因为字符串在Java中是不可变的。

所以使用:

input=input.replaceAll("\\s","");

如果您愿意,可以使用助手插件来帮助您解决此类错误,例如findBugscodePro