[英]Why can't I Remove WhiteSpaces in Java?
我拼命地试图从字符串中删除空格(后来我希望能够将其转换为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”
更换
input.replaceAll("\\s","");
与
input = input.replaceAll("\\s","");
它将起作用,因为字符串是不可变的,所以replaceAll()
不会更改您的字符串对象,它将返回一个新对象。 因此,您将变量input
分配给input.replaceAll("\\\\s","");
返回的字符串input.replaceAll("\\\\s","");
另外,您应尝试遵循Java命名约定,并使字段和变量以小写字母开头。
而且,您也可以更换
if(GamePlay.GameStart == true) {
与
if(GamePlay.GameStart) {
因为在您的版本中,您将GamePlay.GameStart
的值与true
进行比较,并且仅在评估为true
时才执行if
块,而在我的版本中,如果GamePlay.GameStart
为true
则执行ìf
块(尽管编译器可能对其进行了优化)无论如何)。
另一方面,您也可以替换
if (input.equals("Quit") || input.equals("quit")){
与
if (input.equalsIgnoreCase("Quit")) {
因为,我认为这很明显。
字符串是不可变的。 您需要分配由replaceAll
返回的新创建的String
结果:
input = input.replaceAll("\\s","");
input.replaceAll("\\\\s","");
返回删除了空格的字符串。 但是,如果不保留对它的引用,您将看不到结果。 您可能的意思是:
input = input.replaceAll("\\s","");
对于初学者来说,这是一个非常常见的错误。
正如其他人提到的那样,您需要知道replaceAll
返回一个新字符串并且不更改当前字符串,因为字符串在Java中是不可变的。
因此使用:
input=input.replaceAll("\\s","");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.