Nashorn和Rhino:使用空白regexp拆分字符串
Nashorn and Rhino: Splitting strings by whitespace regexp
我正在Java脚本引擎执行的JavaScript中解析Unix shell命令输出。我经常需要用可变数量的空白来分割字符串,并决定使用正则表达式来实现这一点。
到目前为止,在Rhino(Java7及以前版本)中,我可以使用以下内容按空格分割字符串:
line.split("''s+")
这在Nashorn(Java8及更高版本)中不再有效,字符串根本没有被拆分。我必须为Nashorn使用以下内容:
line.split(new RegExp("''s+"))
现在-当然你可能会说-这在Rhino中不起作用。然而,我需要在未来至少一年内保持与Java7的兼容性,因此我需要一个同时使用这两个脚本引擎的解决方案。
我尝试了一个相当丑陋的变通方法:
new java.lang.String(line).split("''s+")
令人惊讶的是,在纳绍恩没有运气。显然,它以某种方式强制为字符串创建NativeString
对应项。
是否有一个nice解决方案可以通过可变数量的空白进行拆分,该解决方案可以同时使用两个脚本引擎?或者你必须走"肮脏"的路——即从脚本中确定脚本引擎(如果可能的话)?
使用正则表达式文字怎么样?
line.split(/''s+/)
在每个JS引擎中都应该以相同的方式工作。
相关文章:
- 如何删除多行HTML排列中的空白
- 在Twitter上用ie9中的空白src访问iframe的contentWindow
- 不同浏览器中的空白字符正则表达式行为
- Javascript中的空白是什么
- Facebook共享显示一个接一个的空白页面
- 如果我在javascript中输入无效的电子邮件或空白,如何显示特定的文本框边框红色
- RegExp:匹配Javascript中除regex值之外的所有内容
- JavaScript正则表达式文本与RegExp对象
- 使用RegExp查找url中的字符
- 相同的RegExp返回不同的结果-第一次是正确的结果,第二次是null
- 从字符串末尾删除空白无效
- 全局标志仅与第一个匹配项匹配的Regexp
- AngularJS ng选项在选择一个选项后删除了默认的空白值
- javascript RegExp的奇怪行为:相同的正则表达式会产生不同的结果
- 替换为javascript中的regExp
- Nashorn和Rhino:使用空白regexp拆分字符串
- RegExp:如何排除空白
- Regexp去除等式中的空白空间
- 通过对象匹配Javascript regexp中的空白,通过regexp构造函数创建
- Javascript Regexp在尝试将非空白与正在运行的演示进行匹配时表现得很奇怪