首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在数字中插入短划线

在数字中插入短划线
EN

Stack Overflow用户
提问于 2013-08-06 14:57:00
回答 5查看 3.2K关注 0票数 3

对以下几点有什么想法?我想在函数中输入一个数字,并在奇数位之间插入破折号"-“。所以4567897就变成了"456789-7“。到目前为止,我所做的是将数字转换为一个字符串,然后是一个数组,然后在一行中查找两个奇数,并使用.splice()方法在适当的地方添加破折号。它不起作用,我认为我可能无论如何都不会在正确的轨道上,必须有一个更简单的解决方案。

代码语言:javascript
运行
AI代码解释
复制
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;      
}
EN

回答 5

Stack Overflow用户

发布于 2013-08-06 15:02:00

您可以尝试使用正则表达式

代码语言:javascript
运行
AI代码解释
复制
'4567897'.replace(/([13579])(?=[13579])/g, '$1-')

Regex解释

因此,我们找到一个奇数(([13579])是捕获组,这意味着我们可以在替换$1中将其用作引用)确保它后面是非捕获positive lookahead ((?=[13579]))中的另一个奇数,并替换匹配的奇数加上-前缀

票数 2
EN

Stack Overflow用户

发布于 2013-08-06 15:02:34

问题是你正在改变你正在迭代的东西。相反,如果您维护单独的输出和输入...

代码语言:javascript
运行
AI代码解释
复制
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;
}
票数 2
EN

Stack Overflow用户

发布于 2013-08-06 15:03:28

下面是执行此操作的函数:

代码语言:javascript
运行
AI代码解释
复制
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);

测试过了所有的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18083687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档