首页 > 其他分享 >简单-1694. 重新格式化电话号码

简单-1694. 重新格式化电话号码

时间:2022-10-01 10:44:29浏览次数:60  
标签:nNum 格式化 数字 个块 number 1694 123 电话号码 length


给你一个字符串形式的电话号码 number 。number 由数字、空格 ' '、和破折号 '-' 组成。

请你按下述方式重新格式化电话号码。

  • 首先,删除 所有的空格和破折号。
  • 其次,将数组从左到右 每 3 个一组 分块,直到 剩下 4 个或更少数字。剩下的数字将按下述规定再分块:
    • 2 个数字:单个含 2 个数字的块。
    • 3 个数字:单个含 3 个数字的块。
    • 4 个数字:两个分别含 2 个数字的块。

最后用破折号将这些块连接起来。注意,重新格式化过程中 不应该 生成仅含 1 个数字的块,并且 最多 生成两个含 2 个数字的块。

返回格式化后的电话号码。

 

示例 1:

输入:number = "1-23-45 6"
输出:"123-456"
解释:数字是 "123456"
步骤 1:共有超过 4 个数字,所以先取 3 个数字分为一组。第 1 个块是 "123" 。
步骤 2:剩下 3 个数字,将它们放入单个含 3 个数字的块。第 2 个块是 "456" 。
连接这些块后得到 "123-456" 。

示例 2:

输入:number = "123 4-567"
输出:"123-45-67"
解释:数字是 "1234567".
步骤 1:共有超过 4 个数字,所以先取 3 个数字分为一组。第 1 个块是 "123" 。
步骤 2:剩下 4 个数字,所以将它们分成两个含 2 个数字的块。这 2 块分别是 "45" 和 "67" 。
连接这些块后得到 "123-45-67" 。

示例 3:

输入:number = "123 4-5678"
输出:"123-456-78"
解释:数字是 "12345678" 。
步骤 1:第 1 个块 "123" 。
步骤 2:第 2 个块 "456" 。
步骤 3:剩下 2 个数字,将它们放入单个含 2 个数字的块。第 3 个块是 "78" 。
连接这些块后得到 "123-456-78" 。

示例 4:

输入:number = "12"
输出:"12"

示例 5:

输入:number = "--17-5 229 35-39475 "
输出:"175-229-353-94-75"

 

/**
 * @param {string} number
 * @return {string}
 */
var reformatNumber = function(number) {
    //找规律
    const nNum=number.replace(/[ -]/g,'')
    if(nNum.length===2||nNum.length===3){
        return nNum
    }
    if(nNum.length===4){
        return nNum[0]+nNum[1]+'-'+nNum[2]+nNum[3]
    }
    const d=nNum.length%3
    let p1=0
    let p2=0
    let str=''
    if(d===0){
        p1=nNum.length/3
    }else if(d===1){
        p1=(nNum.length-1)/3-1
        p2=2
    }else if(d==2){
        p1=(nNum.length-2)/3
        p2=1
    }
    for(let i=0;i<p1;i++){
        if(i===0){
            str=str+nNum.substr(i*3,3)
        }else{
            str=str+'-'+nNum.substr(i*3,3)
        }
    }
    if(p2===1){
        str=str+'-'+nNum.substr(p1*3,2)
    }else if(p2===2){
        str=str+'-'+nNum.substr(p1*3,2)+'-'+nNum.substr(p1*3+2,2)
    }
    return str
};

 

提示:

  • 2 <= number.length <= 100
  • number 由数字和字符 '-' 及 ' ' 组成。
  • number 中至少含 2 个数字。

标签:nNum,格式化,数字,个块,number,1694,123,电话号码,length
From: https://www.cnblogs.com/caoke/p/16746882.html

相关文章

  • linux磁盘分区、格式化和挂载
    这篇文档主要是记录新加磁盘常用的操作。时间久了就会变得陌生。还是需要记录起来。 1.查看磁盘空间基本使用情况[root@htl-test01~]#df-hFilesystemSizeU......
  • 7. HTML-- 文本格式化
    1.前言一些HTML标签除了具有一定的语义(含义)外,还有默认的样式,例如<b>(加粗)、<em>(倾斜)等,通过这些标签我们无需借助CSS就可以为网页中的内容定义样式。在这些具有语义和......
  • Vscode中点击自动eslint格式化和prettier搭配
    eslint规则只是限制我们在写代码时候的标准化,尤其是在团队开发中成员的代码一致性,如果大家都是自己的标准,那么写出的项目将没有办法进行阅读,不利于后期的二次开发vscode自......
  • Python字符串格式化%s%d%f详解
    %s字符串string="hello"#%s打印时结果是helloprint"string=%s"%string#output:string=hello#%2s意思是字符串长度为2,当原字符串的长度超过2时,按原长度打......
  • vue2/vue3+eslint文件格式化
    vue+javascript1.设置vscode保存时格式化文件2.打开settings.json3.设置settings.json文件{"editor.codeActionsOnSave":{"source.fixAll.eslint":t......
  • Oracle部署,关于日志文件系统选择(硬盘格式化、挂载)
    之前部署过好多Oracle服务,采用的日志文件系统一直是ext3。但是我观察到很多人在格式化/挂载数据盘时,采用的日志文件系统类型有ext3、ext4、xfs等,这不禁让我发出疑问,哪个类......
  • 电话号码分析与处理、开发小游戏贪食蛇
    Java核心API--电话号码分析与处理一、熟悉Math类    Math类包含执行基本数字运算的方法,它没有构造方法,当使用类中的成员时,要查看类中的成员是否是静态,如果是静态......
  • [css]一个块格式化上下文(BFC)阻止外边距重叠的示例
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Document</title><style>*{margin:0;paddin......
  • 格式化字符+运算符
    用户交互早期交互银行流程用户到银行-->客服查验存折-->询问要办理什么业务-->用户存或取-->客服回复操作-->完成操作现如银行ATM流程用户到ATM-->ATM查验卡-->显示业......
  • 【前端】vue3 vue3-ace-editor json格式化显示 json编辑器
    一、效果二、代码<!----><template><divclass='content'><el-selectv-model="aceConfig.theme"class="m-2"placeholder="Select"size="large">......