num*_*web 2 javascript arrays string replace
我有一个由拉丁语和柏柏尔字符串组成的多维数组,我想用它作为替换输入数据的参考:
var alphabet = Array ( Array( 'a', '?' ), Array( 'b', '?' ), Array( 'g', '?' ), Array( 'gw', '??' ), Array( 'd', '?' ), Array( '?', '?' ), Array( 'e', '?' ), Array( 'f', '?' ), Array( 'k', '?' ), Array( 'kw', '??' ), Array( 'h', '?' ), Array( '?', '?' ), Array( '?', '?' ), Array( 'x', '?' ), Array( 'q', '?' ), Array( 'i', '?' ), Array( 'j', '?' ), Array( 'l', '?' ), Array( 'm', '?' ), Array( 'n', '?' ), Array( 'u', '?' ), Array( 'r', '?' ), Array( '?', '?' ), Array( '?', '?' ), Array( 's', '?' ), Array( '?', '?' ), Array( 'c', '?' ), Array( 't', '?' ), Array( '?', '?' ), Array( 'w', '?' ), Array( 'Y', '?' ), Array( 'z', '?' ), Array( '?', '?' ) );
var word = $("input[name=word]").val();
var word_split = word.split("");
var tifinaghized = '';
for (var i = 0; i < word_split.length; i++)
{
tifinaghized += word.replace(word_split, alphabet[i][1]);
}
$("span.generated_tifinaghe").html( tifinaghized );
Run Code Online (Sandbox Code Playgroud)
因此,如果用户键入"a",则应将其替换为"ⴰ"的柏柏尔表示.这仅替换第一个字符,但不替换整个输入数据.如何用相同字母表数组中的对替换字母数组中的拉丁字符?
PS; 如果你看到正方形,这是正常的.
gil*_*ly3 12
您需要使用设置了全局选项的正则表达式来替换所有实例.但是,您也可以稍微简化此代码并摆脱循环.而不是Arrays,使用一个对象:
var alphabet = {
'a': '?',
'b': '?',
'g': '?',
'gw': '??',
'd': '?',
'?': '?',
...
'z': '?',
'?': '?'
};
Run Code Online (Sandbox Code Playgroud)
然后使用带有替换函数的正则表达式:
var word = $("input[name=word]").val();
var tifinaghized = word.replace(/[abgd?efkh??xqijlmnur??s?ct?wYz?]|gw|kw/g, function(s) {
return alphabet[s];
});
Run Code Online (Sandbox Code Playgroud)
工作演示:http://jsfiddle.net/gilly3/MdF6R/