在字符串中切换数字
我有一个由空格分隔的唯一编号的字符串,如下所示:
"2 4 13 14 28 33"
需要一种快速有效的方式在窗体中切换一对:
switchNumbers(2, 28)
// result: "28 4 13 14 2 33"
我可以分割字符串并搜索值,但这听起来很无聊。 有什么更好的想法
也请尝试:
var numbers = "2 4 13 14 28 33";
function switchNum(from, to){
return numbers.replace(/d+/g, function(num){
return num == from ? to : num == to ? from : num
})
}
alert(switchNum(2, 28)) //result: "28 4 13 14 2 33"
您可以利用array
函数而不是strings
。
在代码中内嵌注释:
var str = "2 4 13 14 28 33";
// Don't use `switch` as name
function switchNumbers(a, b) {
var arr = str.split(' ');
// Convert string to array
// Get the index of both the elements
var firstIndex = arr.indexOf(a.toString());
var secondIndex = arr.indexOf(b.toString());
// Change the position of both elements
arr[firstIndex] = b;
arr[secondIndex] = a;
// Return swapped string
return arr.join(' ');
}
alert(switchNumbers(2, 28));
DEMO
我不能判断这是否无聊,但至少它不是分裂和循环:)
function switchNumbers(str, x, y) {
var regexp = new RegExp('b(' + x + '|' + y + ')b', 'g'); // /b(x|y)b/g
return str.replace(regexp, function(match) { return match == x ? y : x; });
}
var s = "2 4 13 14 28 33";
document.write('<pre>' + switchNumbers(s, 2, 28) + '</pre>');
链接地址: http://www.djcxy.com/p/74957.html