2012-07-12 60 views
1

我们从哪里开始,如果我们想从这个句子馕删除词缀 menang 删除阵列中使用JavaScript贴上

affix_list = [ 
'me-an', 
'me-kan, 
'di-kan 
] 

string = 'meangan menangkan dimenangkan' 

所以它会输出

output = [ 
'ang', 
'nang' 
'menang' 
] 

回答

2

您可能需要使用regular expressions这些替代品。从affix_list开始,这应该工作:

output = affix_list.reduce(function(str, affix) { 
    var parts = affix.split("-"); 
    var regex = new RegExp("\\b"+parts[0]+"(\\S+)"+parts[1]+"\\b", "g"); 
    return str.replace(regex, "$1") 
}, string).split(" "); 

regex ES看起来就像这样:

/\bme(\S+)an\b/g 
/\bme(\S+)kan\b/g 
/\bdi(\S+)kan\b/g 

但请注意,你当然需要me-an之前更换me-kan,否则"menangkan"将成为nangk在可以应用me-kan表达式之前。

+0

什么是\ S + for?感谢bergi的帮助! – 2012-07-12 19:10:39

+0

所以我们必须把me-an放在词缀的上面吗? – 2012-07-12 19:14:18

+0

非白色。如果您使用'。+'(或'。+?'),它可能会删除最后一个单词的前缀和后缀。 – Bergi 2012-07-12 19:15:52

1

您将需要以Javascript正则表达式开始并遍历值,相应地检索中间值。我会的第一个适合你,你可以尝试一下,其余:)

var re = /me(\w+)an/; 
var str = "meangan"; 
var newstr = str.replace(re, "$1"); 
console.log(newstr); 
// outputs ang 

参考https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions