\ n和\\ s +不能在Java中工作

时间:2012-11-06 09:48:16

标签: java replace bluej

所以我是一名IB学生,我正在参加比赛。科学。我们需要创建一个代码来解决问题,因为我正在编写我的Java代码,我发现String.replaceAll();有助于编写我的代码。我必须删除任何空格和任何新行,因此我找到了\\s+\\n。因此,当我输入代码String.replaceAll("\\s+","");时,它不起作用,与String.replaceAll("\\n","");相同。我已经尝试删除“”但BlueJ,发送错误说\是非法字符。我检查了String.replaceAll();是否有效但它确实有效,所以我得出结论:\\s+\\n出了问题。

我找到了删除空格String.replaceAll(" ","");的替代方法,但我仍然需要一种删除新行的方法。

以下是代码的一部分

String name = InputString("Enter name: ");
String name1 = name.replaceAll("\\s+","");
   output(name1); // the output function is located in the IBIO which is provided because I'm and IB student

好的,所以有人给了我一个代码,删除了所有新行\\n,但是如果有人能告诉我\\s+无法正常工作的原因,那将会有所帮助。

4 个答案:

答案 0 :(得分:4)

“它不起作用”是什么意思?

人们常常忘记的一点是,String类是不可变的。这意味着,如果您在replace()上调用类似String的方法,则原始字符串不会更改;相反,该方法返回一个新字符串。

String s = "Hello World";

// Does not change the original string!
s.replaceAll("\\s+", ""); 

// Use this instead to assign s to the new string
s = s.replaceAll("\\s+", "");

答案 1 :(得分:3)

真正让人们感到\\s无效的原因是,如果存在字符代码0xa0(非中断空格)而不是普通空格。方法replaceAll不会使用\\s正则表达式捕获0xa0。相反,你必须做类似的事情:

String name1 = name.replaceAll("\\u00a0",""); 

替换不间断的空格。

答案 2 :(得分:0)

这一行

System.out.println("Multiline \r\n String".replaceAll("\\s+", ""));

打印

MultilineString

因此,我建议您发布您遇到问题的确切字符串文字,并生成确切的输出。

答案 3 :(得分:0)

从String

中删除换行符
String s = "Enter name :\n Your name ";
        s = s.replaceAll("\n", "");