如何从已知标记列表中标记字符串?

时间:2013-12-18 02:19:54

标签: javascript regex node.js

我有一个令牌列表,用于生成仿日语单词,如下所示:

var syllables = ["chi","tsu","shi","ka","ki","ku","ke","ko","ta","te","to","sa","su","se","so","na","ni","nu","ne","no","ha","hi","fu","he","ho","ma","mi","mu","me","mo","ya","yu","yo","ra","ri","ru","re","ro","wa","wo"];

给出像“yoniyotachihochinitarehakemukenushihofure”这样的词,是否可以将它分成单独的标记,如[“yo”,“ni”,“yo”......使用RegExps?

到目前为止,我有

  var s="";
  for(var i=0;i<syllables.length;i++)
    s+=("("+syllables[i]+")");
  s+="+";
  console.log(s);
  var splitregex = new RegExp(s,"gi");
  console.log(str.split(splitregex));

我回来了“['yoniyotachihochinitarehakemukenushihofure']”

1 个答案:

答案 0 :(得分:3)

var syllables = ["chi","tsu","shi","ka","ki","ku","ke","ko","ta","te","to","sa","su","se","so","na","ni","nu","ne","no","ha","hi","fu","he","ho","ma","mi","mu","me","mo","ya","yu","yo","ra","ri","ru","re","ro","wa","wo"];

var r = new RegExp(syllables.join('|'), 'g');

var str = 'yoniyotachihochinitarehakemukenushihofure';

console.log(str.match(r));
// return ["yo", "ni", "yo", "ta", "chi", "ho", "chi", "ni", "ta", "re", "ha", "ke", "mu", "ke", "nu", "shi", "ho", "fu", "re"] 

http://jsfiddle.net/T8LeY/

说明:它生成正则表达式/chi|tsu|.../g,它只匹配列表中的每个音节