2017-03-25 26 views
0
var str = document.getElementById("kb").value.split('\\n'); 
console.log(str); 
for(var i=0; i<str.length;i++){ 

    document.getElementById("demo").innerHTML = str[i]; 
    var token = str[i].split(/[\[\]]|,+/).join(' '); 
    document.getElementById("demo3").innerHTML = token; 
    for(var j=0; j<token.length; j++){ 
     alert(token[j]); 
     console.log(token); 
    } 

} 

在这种情况下,给我一个角色,我有一个文本,如果它遇到“\ n”每个句子拆分,“[”,“]”和','。结果是每次而不是字

当我运行这个,它显示一个警告框,一次只显示一个字符而不是整个单词。

我的textarea如下;

[幼儿]

[¬Toddler,儿童] ...

我想有令牌[0]是幼儿,令牌[1]是¬Toddler和令牌[2 ]要孩子,等

谢谢

+0

你的意思是你在内部循环中获得一个字符,它是'token'字符串的迭代?这应该是可以预料的。也许你忘了你正在做的'.join(“”)? –

+0

你还可以发布你的textarea内容吗? – mehulmpt

+0

token是一个字符串,并且已经为令牌中的每个字母提供了警报 - alert(token [j]); &因此你面临的问题 – Len

回答

1

在你的代码join这里返回一个字符串:
var token = lines[i].split(/[\[\]]|,+/).join(' ');
则Y你迭代字符串中的字符。

这里是一个固定溶液(也on jsfiddle):

var lines = document.getElementById("kb").value.split('\\n'); 
 
console.log(lines); 
 
for(var i=0; i < lines.length;i++){ 
 

 
    document.getElementById("demo").innerHTML = lines[i]; 
 
    // var token = lines[i].split(/[\[\]]|,+/).join(' '); // `join` returns string! 
 
    var tokens = lines[i].split(/[\[\]]|,+/).filter((str) => str.trim()); 
 
    document.getElementById("demo3").innerHTML = tokens; 
 
    for(var j=0; j<tokens.length; j++){ 
 
     alert(tokens[j]); 
 
     console.log(tokens); 
 
    } 
 

 
}
<textarea id="kb">[Toddler] [¬Toddler,Child]</textarea> 
 
<div id="demo"></div> 
 
<div id="demo3"></div>

Array.filter与一个arrow function用于去除空白标记。

+0

非常感谢你! – lfarr

相关问题