Javascript:eval 中的 replaceAll 不起作用

Javascript: replaceAll inside the eval is not working

我在 java nashorn 引擎 eval 中有一个 java 脚本代码。 像这样

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

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

Exception in thread "main" javax.script.ScriptException: :1:426 Missing close quote

您犯了一个错误,没有转义 \n 的反斜杠。

如果你在做 .replaceAll('\n', '<somethng>'),你实际上是在搜索换行符和替换,这不等于搜索 \n 字符串。

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

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

旁注: 顺便说一句,我很想知道你为什么要替换 \r 这样做没有多大用处,因为现在它不再单独使用了经常。这是 \r\n.

的定义

\r = CR (Carriage Return) // 在Mac OS之前用作换行符X

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

\r\n = CR + LF // 在Windows

中用作换行符