Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
\n和\\s+;不在Java中工作_Java_Replace_Bluej - Fatal编程技术网

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

\n和\\s+;不在Java中工作,java,replace,bluej,Java,Replace,Bluej,所以我是一名IB学生,我正在攻读Comp。Sci。我们需要创建一个代码来解决问题,在编写Java代码时,我发现了String.replaceAll()这对编写代码很有帮助。我必须删除所有空格和新行,所以我找到了\\s+和\\n。因此,当我输入代码String.replaceAll(“\\s+”,”)它不起作用,与String.replaceAll(\\n“,”)相同。我已尝试删除“”但BlueJ发送了一个错误,指出\是非法字符。我检查了是否可能是字符串.replaceAll()不起作用,但它确实

所以我是一名IB学生,我正在攻读Comp。Sci。我们需要创建一个代码来解决问题,在编写Java代码时,我发现了
String.replaceAll()这对编写代码很有帮助。我必须删除所有空格和新行,所以我找到了
\\s+
\\n
。因此,当我输入代码
String.replaceAll(“\\s+”,”)它不起作用,与
String.replaceAll(\\n“,”)相同。我已尝试删除“”但BlueJ发送了一个错误,指出
\
是非法字符。我检查了是否可能是
字符串.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+
不工作的原因,那将很有帮助。

什么是“不工作”呢

关于这一点,人们经常忘记的一件事是类
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+", "");
这条线

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

MultilineString

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

从字符串中删除换行符

String s = "Enter name :\n Your name ";
        s = s.replaceAll("\n", "");

真正让人们困惑的一个可能的原因是,
\\s
不起作用的原因是字符代码0xa0(非中断空格)而不是普通空格。方法
replaceAll
不使用
\\s
regex捕捉0xa0。相反,您必须执行以下操作:

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

替换不间断空格。

我假设您指的是Java,而不是JavaScript…请看这个答案,它解释了您需要记录的内容。请同时给出您的输入值。我已经输入了部分代码,您可以看到我在上面声明了这些内容。刚才有人输入了'.replaceAll((?s)\\s+,'');'这对新行很好。问题是它不输出任何东西,它使用新字符串创建一个文本文件。如果我做了输出();或System.out.println();它将给出与System.out.println()相同的结果;将在文本文件中给出。因此,您的问题完全在于其他地方
output
不是标准的Java函数,
InputString
也不是。你知道你要处理的字符串是什么吗?是的,你是对的,作为IB的学生,我们得到了一个名为IBIO的代码,它也执行输出函数和其他函数,很抱歉忘了提到这一点