我需要从控制台输入的字符串中删除空格

所以我有一个使用以下格式的控制台输入:

  

“ Adrian,18、180、80”    而且我用了这不起作用

BufferedReader reader = new BufferedReader(newInputStreamReader(System.in));
line = reader.readLine();
System.out.println("You added this user: " + line);
String[] b=line.split(",");
for(String name : b){
   name.replace(" ","");
   System.out.println(name);
   }

但是,输出如下:

Adi
 16
 180
 80

我尝试了不同的方法,但是似乎没有人为我工作。也许是因为我在for循环中将其称为

chbfish 回答:我需要从控制台输入的字符串中删除空格

注意replace如何返回a string derived from this string(来自javadoc的引用)。这是因为它不会更改初始字符串的值。在Java中,String是不可变的。

您必须直接打印replace的结果或将其分配给变量。

for(String name : b){
    name = name.replace(" ","");
    System.out.println(name);
}

或更短:

for(String name : b){
    System.out.println(name.replace(" ",""));
}

如果要在一行上显示整个结果,请使用print而不是println

,

请记住,StringImmutable,任何修改都应分配给新的String

   String trimmed = name.replace(" ","");
   System.out.println(trimmed);
,

String是不可变的,因此,当您调用replace时,实际上并没有从name中删除空格,而只是创建了一个不引用它的新字符串。您只需将replace的返回值分配给name

for (String name : b) {
   name = name.replace(" ","");
   System.out.print(name);
}

此外,如果希望将输出放在一行中,则应使用System.out.print而不是System.out.println(如上所述)。后者在输入的末尾添加了换行符。

,

看看String.replace()方法的documentation,我们发现以下内容:“返回一个新字符串,该字符串是用newChar替换了该字符串中所有出现的oldChar的结果。”

这意味着您必须保存name.replace(“”,“”)的结果,因为该方法不会更改您的旧字符串。试试这个:

name = name.replace(" ","");
,

尝试使用System.out.print()而不是System.out.println()。

System.out.println()将光标置于下一行。

本文链接:https://www.f2er.com/3158545.html

大家都在问