和 \s+ 在 Java 中不起作用
Posted
技术标签:
【中文标题】\n 和 \\s+ 在 Java 中不起作用【英文标题】:\n and \\s+ not working in Java 【发布时间】:2012-10-26 06:00:12 【问题描述】:所以我是一名 IB 学生,我正在参加 Comp。科学。我们需要创建一个代码来解决问题,因为我正在编写我的 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+
不起作用的原因,那会很有帮助。
【问题讨论】:
我假设您指的是 Java,而 不是 javascript... 请看这个答案***.com/questions/2163045/… 它解释了你需要做什么 能否请您也提供您的输入值 【参考方案1】:“它不起作用”是什么意思?
人们经常忘记的一件事是 String
类是不可变的。这意味着如果您在String
上调用类似replace()
的方法,则原始字符串不会 更改;相反,该方法返回一个新字符串。
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+", "");
【讨论】:
我已经输入了一部分代码,你可以看到我在上面声明了这些东西。并且有人刚刚输入了 '.replaceAll("(?s)\\s+", "");'这适用于新行。【参考方案2】:\\s
不起作用的一个可能原因是字符代码 0xa0(不间断空格)而不是普通空格。方法 replaceAll
不会使用 \\s
正则表达式捕获 0xa0。相反,您必须执行以下操作:
String name1 = name.replaceAll("\\u00a0","");
替换不间断的空格。
【讨论】:
【参考方案3】:这一行
System.out.println("Multiline \r\n String".replaceAll("\\s+", ""));
打印
MultilineString
因此,我建议您发布您遇到问题的确切字符串文字,并生成确切的输出。
【讨论】:
问题是它不输出任何东西,它使用新字符串来创建一个文本文件。如果我做 output();或 System.out.println();除了 System.out.println(); 之外,它会给出相同的结果。将在文本文件中给出。 所以你的问题完全出在其他地方。output
不是标准的 Java 函数,InputString
也不是。您是否确定要处理的字符串是什么?
是的,你是对的,作为 IB 学生,我们得到了一个名为 IBIO 的代码,它还具有输出功能和其他功能,抱歉忘记提及了【参考方案4】:
从字符串中删除换行符
String s = "Enter name :\n Your name ";
s = s.replaceAll("\n", "");
【讨论】:
以上是关于 和 \s+ 在 Java 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
npm run build:s-s-r 在 Angular 8 中不起作用
为啥 SetTimeZoneInformation 在 Windows XP 中不起作用?
MouseDragged 和 MouseMoved 在 Java Applet 中不起作用