如果我们只有一个数字,我的脚本效果很好,但问题是如果O在一个字符串中有2个或更多数字。
我的目标是找到字符串中的所有数字,将它们反转并将它们放在它们的位置。
这是我的代码:
function findNum(input) {
var string = input;
var regex = /\d+/g;
var matches = string.match(regex);
alert("BEfore reverse " + matches);
var reverseNum = reverseString(matches + "");
var replace = /,/g;
var FinalResult = reverseNum.replace(replace, ".");
alert(FinalResult);
return FinalResult;
}
function reverseString(str) {
var splitString = str.split("");
alert(splitString);
var reverseArray = splitString.reverse();
alert(reverseArray);
var joinArray = reverseArray.join("");
alert(joinArray);
return joinArray;
}
function myFunction() {
var DynamicTemp = "Test test 0.76 and add num .";
var tmpNum = findNum(DynamicTemp);
var stringNum = DynamicTemp;
var regex = /\d+/g;
var matches = stringNum.match(regex) + "";
var replace = /,/g;
var res = matches.replace(replace, ".");
var result = stringNum.replace(res, tmpNum);
DynamicTemp = result;
document.getElementById("demo").innerHTML = DynamicTemp;
}
答案 0 :(得分:0)
这是一个捕获所有整数的工作代码段(您可以调整它以添加对十进制数的支持)
我们在这里做的是我们首先使用matches
将join("")
转换为字符串。
请勿使用+""
来加强阵列。请参阅下面的第二个片段,了解原因。
然后要反转字符串,我们必须先使用split("")
将其转换为char数组。 reverse()
反转数组,join("")
将其转换为字符串。
var test = "123blah456 random text 789";
var matches = test.match(/\d+/g);
var matchesString = matches.join("");
var matchesArray = matchesString.split("");
var matchesArrayReversed = matchesArray.reverse();
var reversed = matchesArrayReversed.join("");
console.log(reversed);
// outputs "987654321"

以下解释了为什么你的程序无效。
var matches = "123asd456fgh789".match(/\d+/g);
console.log("matches = "+matches);
// After you get the matches using the regex, you have an array.
// matches = ["123","456","789"]
//Now see what happens when you use: matches + ""
console.log("matches+\"\" = "+matches+"");
// matches+"" = "123,456,789"
// The commas from the array are added in when you use: +""
// The better way of doing this is to use: array.join("")
console.log("matches.join(\"\") = "+matches.join(""));
// matches.join("") = "123456789"

答案 1 :(得分:0)
如果您需要支持尚未支持箭头功能的IE和旧版本的浏览器(在Me.Name's answer中建议),您可以使用以下函数迭代匹配数组并用反向替换值。
function reverseNumbers(string) {
var regex = /\d+(?:\.\d+)?/g;
var matches = string.match(regex);
var res = string;
for (var i=0; i<matches.length; i++) {
res = res.replace(matches[i], matches[i].split("").reverse().join(""))
}
document.getElementById("demo").innerHTML = res;
}
reverseNumbers("Test test 0.76 and add num 12 .");
&#13;
<div id="demo"></div>
&#13;
结果字符串:Test test 67.0 and add num 21 .