对以下几点有什么想法?我想在函数中输入一个数字,并在奇数位之间插入破折号"-“。所以4567897就变成了"456789-7“。到目前为止,我所做的是将数字转换为一个字符串,然后是一个数组,然后在一行中查找两个奇数,并使用.splice()
方法在适当的地方添加破折号。它不起作用,我认为我可能无论如何都不会在正确的轨道上,必须有一个更简单的解决方案。
function DashInsert(num) {
var numArr = num.toString().split('');
for (var i = 0; i < numArr.length; i++){
if (numArr[i]%2 != 0){
if (numArr[i+1]%2 != 0) {
numArr.splice(i, 0, "-");
}
}
}
return numArr;
}
发布于 2013-08-06 15:02:00
您可以尝试使用正则表达式
'4567897'.replace(/([13579])(?=[13579])/g, '$1-')
Regex解释
因此,我们找到一个奇数(([13579])
是捕获组,这意味着我们可以在替换$1
中将其用作引用)确保它后面是非捕获positive lookahead ((?=[13579])
)中的另一个奇数,并替换匹配的奇数加上-
前缀
发布于 2013-08-06 15:02:34
问题是你正在改变你正在迭代的东西。相反,如果您维护单独的输出和输入...
function insertDashes(num) {
var inStr = String(num);
var outStr = inStr[0], ii;
for (ii = 1; ii < inStr.length; ii++) {
if (inStr[ii-1] % 2 !== 0 && inStr[ii] % 2 !== 0) {
outStr += '-';
}
outStr += inStr[ii];
}
return outStr;
}
发布于 2013-08-06 15:03:28
下面是执行此操作的函数:
function dashes(number){
var numString = '';
var numArr = number.toString().split('');
console.log(numArr);
for(i = 0; i < numArr.length; i++){
if(numArr[i] % 2 === 1 && numArr[i+1] % 2 === 1){
numString += numArr[i] + '-';
}else{
numString += numArr[i];
}
}
console.log(numString);
}
dashes(456379);
测试过了所有的东西。
https://stackoverflow.com/questions/18083687
复制相似问题