我们从哪里开始,如果我们想从这个句子我昂的我馕删除词缀根迪 menang 根删除阵列中使用JavaScript贴上
affix_list = [
'me-an',
'me-kan,
'di-kan
]
string = 'meangan menangkan dimenangkan'
所以它会输出
output = [
'ang',
'nang'
'menang'
]
我们从哪里开始,如果我们想从这个句子我昂的我馕删除词缀根迪 menang 根删除阵列中使用JavaScript贴上
affix_list = [
'me-an',
'me-kan,
'di-kan
]
string = 'meangan menangkan dimenangkan'
所以它会输出
output = [
'ang',
'nang'
'menang'
]
您可能需要使用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
表达式之前。
您将需要以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
什么是\ S + for?感谢bergi的帮助! – 2012-07-12 19:10:39
所以我们必须把me-an放在词缀的上面吗? – 2012-07-12 19:14:18
非白色。如果您使用'。+'(或'。+?'),它可能会删除最后一个单词的前缀和后缀。 – Bergi 2012-07-12 19:15:52