我有这段代码:
var lines = this.result.split('\n');
for (var line = 0; line < lines.length; line++) {
console.log(lines[line]);
var sublines = lines[line].split(' ');
for (var subline = 0; subline < sublines.length; subline++) {
console.log(sublines[subline]);
}
}
我希望它能从字符串中提取标记,然后从每个标记中解析整数,但看起来split(" ")
不会在这里起作用!
以下是我看到的内容:
(0,(u&#39; 5643145391&#39;,u&#39; 11367866245&#39;))
安慰两次,这意味着没有完成拆分。在我的真实数据中,带有大数字的列表长度为150,但这不重要。
如何分割那个(部分unicode)字符串?
jsFiddle重现此问题。然而,似乎小提琴只打印了一次字符串,而没有注释这条消息的打印次数。
期望的输出是每次迭代的一行:
0
5643145391
11367866245
但是接近这一点的任何事情都会受到赞赏。
答案 0 :(得分:3)
这似乎是RegExp
可能有用的东西,
( // begin capture group
-? // match 0 or 1 minus sign
\d{1,} // match 1 to unlimited digits
) // end capture group
var line = "(0, (u'5643145391', u'11367866245'))",
regex = /(-?\d{1,})/g;
console.log( line.match(regex) );
答案 1 :(得分:2)
你可以先用''替换字符串中不是数字的任何字符,然后用它分割
var lines = document.getElementById("demo");
var lines = lines.innerText;
lines = lines.replace(/[^0-9\.]+/g, ' ');
lines = lines.trim();
res = lines.split(' ');
console.log(res);
或一行
lines.replace(/[^0-9\.]+/g, ' ').trim().split(' ');