如果我们想从这句话中删除词缀,我们从哪里开始?me ang an me nang kan di menang kan
affix_list = [
'me-an',
'me-kan,
'di-kan
]
string = 'meangan menangkan dimenangkan'
所以它会输出
output = [
'ang',
'nang'
'menang'
]
如果我们想从这句话中删除词缀,我们从哪里开始?me ang an me nang kan di menang kan
affix_list = [
'me-an',
'me-kan,
'di-kan
]
string = 'meangan menangkan dimenangkan'
所以它会输出
output = [
'ang',
'nang'
'menang'
]
您可能希望对这些替换使用正则表达式。从您的 开始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-kan
before me-an
,否则"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