1

如果我们想从这句话中删除词缀,我们从哪里开始?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'
]
4

2 回答 2

2

您可能希望对这些替换使用正则表达式。从您的 开始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(" ");

您的regexes 将如下所示:

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

但请注意,您当然需要替换me-kanbefore me-an,否则"menangkan"nangkme-kan表达式可以应用之前变为。

于 2012-07-12T19:00:05.560 回答
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

于 2012-07-12T18:59:16.043 回答