Javascript:eval中的replaceAll不起作用

时间:2017-10-03 12:10:31

标签: javascript java nashorn

我在java nashorn引擎eval中有一个javascript代码。 像这样的东西

engine.eval("<code>.... print(printIt.substring(1) + '==>Value:' + obj[property].replaceAll('\n', ' ').....<code>");

在这里,我想用简单的空格替换\n\r的所有出现。 但是当我运行这个时,我得到错误:

  

线程“main”中的异常javax.script.ScriptException :: 1:426   缺少近距离报价

1 个答案:

答案 0 :(得分:3)

你错误地没有逃避\n的反斜杠。

如果您正在执行.replaceAll('\n', '<somethng>'),那么您实际上正在搜索换行和替换,这不等于搜索\n字符串。

以下是您应该如何进行转义:

obj[property].replaceAll('\\n', ' ').replaceAll('\\r', ' ') \\for replacing all newline and carriage return.

旁注:顺便说一下,我很有兴趣知道你为什么要替换它\r它没有太大的用处,因为它现在不经常单独使用。以下是\r\n的定义。

\r = CR(回车)//在X之前用作Mac OS中的换行符

\n = LF(换行)//在Unix / Mac OS X中用作新行字符

\r\n = CR + LF //用作Windows中的新行字符