所以我是一名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+
无法正常工作的原因,那将会有所帮助。
答案 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", "");