目前,这将从textarea获取文本并替换charMap中指定的所有字符:
<form>
<textarea name="text" id="text" style="width:300px; height:200px;"></textarea><br />
<input type="button" name="submit" id="submit" value="submit" />
</form>
var charMap = {
"Å":'x',
"å":'y',
"b":'z',
"c":'f'
};
$('#submit').click(function() {
var str = $('#text').val();
var str_array = str.split('');
for( var i = 0, len = str_array.length; i < len; i++ ) {
str_array[ i ] = charMap[ str_array[ i ] ] || str_array[ i ];
}
foo = str_array.join('');
$('#text').val(foo);
});
问题是它无法识别特殊字符。所以它将取代'b'和'c'而不是'Å'和'å'。
有什么想法吗?
答案 0 :(得分:2)
由于.replace()
作用于字符串并返回字符串,因此您可以将多个替换调用链接在一起:
var text = $(this).val().replace(/a/g, "z").replace(/b/g, "y").replace(/c/g, "x");
答案 1 :(得分:2)
现在我已经更好地理解了这些要求,你可以创建一个像这样的替换字符的地图:
示例: http://jsfiddle.net/gaG28/2/
var charMap = {
a:'z',b:'v',c:'n',d:'s',e:'d',
f:'k',g:'e',h:'y',i:'j',j:'r',
k:'f',l:'m',m:'a',n:'c',o:'q',
p:'t',q:'g',r:'i',s:'b',t:'p',
u:'l',v:'u',w:'h',x:'o',y:'w',z:'x'
};
var str = "abcdefghijklmnopqrstuvwxyz";
var str_array = str.split('');
for( var i = 0, len = str_array.length; i < len; i++ ) {
str_array[ i ] = charMap[ str_array[ i ] ] || str_array[ i ];
}
str = str_array.join('');
这也会留下地图中找不到的任何字符。
答案 2 :(得分:0)
您的原始代码是正确的,但问题是由于页面的字符集,请尝试以下操作:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
我头疼同样的问题,这解决了我的问题。