Javascript 是否可以简化一系列String.replace操作?
有没有办法简化这个函数?在最后270个字符的代码中,只有50个字符是它们各自语句的唯一字符。非常不雅。请不要jQuery-我想要一个普通的Javascript解决方案。非常感谢Javascript 是否可以简化一系列String.replace操作?,javascript,Javascript,有没有办法简化这个函数?在最后270个字符的代码中,只有50个字符是它们各自语句的唯一字符。非常不雅。请不要jQuery-我想要一个普通的Javascript解决方案。非常感谢 function numbersToLetters(number) { var n = number.toString(); var l = n.replace('1', 'One'); l = l.replace('2', 'Two'); l = l.replace('3', 'Thre
function numbersToLetters(number) {
var n = number.toString();
var l = n.replace('1', 'One');
l = l.replace('2', 'Two');
l = l.replace('3', 'Three');
l = l.replace('4', 'Four');
l = l.replace('5', 'Five');
l = l.replace('6', 'Six');
l = l.replace('7', 'Seven');
l = l.replace('8', 'Eight');
l = l.replace('9', 'Nine');
l = l.replace('0', 'Zero');
}
您可以创建一个地图:
var map = {
"1" : "One",
"2" : "Two",
...
}
function numbersToLetters(number) {
var l = "" + number;
for(var num in map){
if(!map.hasOwnProperty(num)) continue;
l = l.replace(num, map[num]);
}
return l;
}
尝试使用列表:
var replacementList = [
"Zero" ,
"One" ,
"Two" ,
"Three" ,
"Four" ,
"Five" ,
"Six" ,
"Seven" ,
"Eight" ,
"Nine"
];
function numbersToLetters(number) {
var numberString = number.toString();
for (var i = 0; i < replacementList.length; i++) {
numberString.replace(i, replacementList[i]);
}
return numberString;
};
var replacementList=[
“零”,
“一个”,
“两个”,
“三”,
“四”,
“五个”,
“六”,
“七”,
“八”,
“九”
];
功能编号记事本(编号){
var numberString=number.toString();
对于(变量i=0;i
这支持混合内容的字符串。请不要您的请求不仅仅是重构,还有一个问题
<> fWw,考虑代码在重复数上失败,例如1111的输入,结果是111。- 如果使用循环(
for
,while
…),可以很容易地解决这个问题,但更简单的是:
- 利用
- 对于可以设置全局标志的第一个参数,使用a:
/\d/g
- 第二个参数也可以是返回替换字符串的函数
function numbersToLetters(number) {
var n = '' + number, r = {
'1': 'One',
'2': 'Two',
'3': 'Three',
'4': 'Four',
'5': 'Five',
'6': 'Six',
'7': 'Seven',
'8': 'Eight',
'9': 'Nine',
'0': 'Zero'
};
return n.replace(/\d/g, function (matched) {
return r[matched];
});
}
除非我遗漏了什么,否则这就是“香草Javascript”。是的,这正是代码审查的目的:)@Qix我想他的意思是他不希望任何人使用library/framework.FWIW发布答案,考虑代码在重复的数字上失败,例如输入代码< 1111 > /代码>,导致代码< On111。虽然这是基本的方法,但是我应该注意到,和原来一样,它不能代替重复的数字。
function numbersToLetters(number) {
var n = '' + number, r = {
'1': 'One',
'2': 'Two',
'3': 'Three',
'4': 'Four',
'5': 'Five',
'6': 'Six',
'7': 'Seven',
'8': 'Eight',
'9': 'Nine',
'0': 'Zero'
};
return n.replace(/\d/g, function (matched) {
return r[matched];
});
}