拆分曾经是列表的字符串

时间:2016-09-10 04:16:26

标签: javascript html string algorithm unicode

我有这段代码:

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

但是接近这一点的任何事情都会受到赞赏。

2 个答案:

答案 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(' ');