繁体   English   中英

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

[英]I need to remove the spaces from a string input from console

所以我有一个这种格式的控制台输入:

“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);
   }

但是,output 如下:

Adi
 16
 180
 80

我尝试了不同的方法,但似乎没有人适合我。 也许可能是因为我在 for 循环中调用它

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

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

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

或更短:

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

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

记住String不可变的,任何修改都应该分配给一个新的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);
}

此外,如果您想在一行中使用 output,您应该使用System.out.print而不是System.out.println (如上)。 后者在输入的末尾添加一个换行符。

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

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

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

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

System.out.println() 将把 cursor 放在下一行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM