Nashorn和Rhino:通过空格regexp拆分字符串

时间:2015-03-23 13:50:10

标签: java javascript regex rhino nashorn

我在Java脚本引擎执行的JavaScript中解析Unix shell命令输出。我经常需要通过可变数量的空格来分割字符串,并决定使用正则表达式。

到目前为止,在Rhino(Java 7和之前的版本)中,我可以使用以下内容按空格分割字符串:

line.split("\\s+")

这在Nashorn(Java 8及更高版本)中不再有效,字符串根本就不会被拆分。我必须对Nashorn使用以下内容:

line.split(new RegExp("\\s+"))

现在 - 当然你可能会说 - 这在Rhino中不起作用。但是,我需要至少在未来一年内保持与Java 7的兼容性,因此我需要一个适用于两个脚本引擎的解决方案。

我尝试了一个相当丑陋的解决方法:

new java.lang.String(line).split("\\s+")

令人惊讶的是Nashorn没有运气。显然,它以某种方式强制创建其NativeString对应字符串。

是否有一个漂亮的解决方案可以通过可变数量的空白进行拆分,这个空白可以同时使用两个脚本引擎?或者你必须采用“脏”的方式 - 即从脚本中确定脚本引擎(如果可能的话)?

1 个答案:

答案 0 :(得分:3)

使用正则表达式文字怎么样?

line.split(/\\s+/)

在每个JS引擎中应该完全相同。