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
中用作换行符
我在 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