我想修复...
中格式错误的省略号(String
)。
"Hello.. World.."
"Hello... World..." // this is correct
"Hello.... World...."
"Hello..... World....."
应全部更正为:
"Hello... World..."
以下正则表达式处理 3或更多连续.
的任何实例:
line.replaceAll("\\.{3,}", "...");
然而,当正好2 连续.
时,我不知道如何处理这种情况。我们做不到这样的事情:
line.replaceAll("\\.{2}", "...");
例如,对于"..."
,上面的代码将返回"......"
,因为正则表达式将替换前2个.
(索引0和1),然后是下一个2 .
的(索引1和2),结果为"..." + "..." = "......"
。
这样的工作:
line.replaceAll("\\.{2}", "...").replaceAll("\\.{3,}", "...");
......但必须有更好的方法!
答案 0 :(得分:5)
您可以替换.
中的两个或更多个组:
[.]{2,}
...
答案 1 :(得分:3)
为什么不保持简单?
var d = '[{"address":"10.0.35.118","cpus":4}]';
var sr = JSON.parse(d);
// Array of Object => List of Map
var is = Immutable.fromJS(sr);
console.log(sr);
console.log(is.toArray());
// Now its Array of Map
var list = is.valueSeq().toArray();
console.log(list);
list.forEach(function(item) {
// Convert Map to Array
console.log(item.toArray());
});
如果你真的不想让它与三人小组搞混,那就是:
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.7.5/immutable.min.js"></script>
这样做的目的是首先查找大于3的组,然后查找2组。关于“......”的特殊之处是“......”中有2组“..”。所以在\.\.+
中你会寻找第三个“。”在第一个之后2.如果第三个“。”存在然后丢弃该结果。这称为负向前瞻。要丢弃第二个“......”,你必须执行负面的后视。所以\.{4,}|(?<!\.)\.{2}(?!\.)
寻找那个“。”在第二个“..”之前,如果找到则会丢弃此结果。
javascript无法执行负面的lookbehind,所以我使用了一个使用Java编译器。
答案 2 :(得分:1)
你可以通过否定来检测,不是一个或多个单词后跟一个&#34;正确的&#34;椭圆,并使用正则表达式修复椭圆:
line.replaceAll("[^\\w* ]+([.]{1,})", "...")
这有利于不替换其他标点符号而不是格式错误的椭圆。
答案 3 :(得分:1)