• 正则替换【JS,正则表达式】


    问题描述

    表示数字_牛客题霸_牛客网 (nowcoder.com)
    题目要求将所有的数字替换成*数字*

    原本这道题我准备就常规使用c++去写的,但是写的过程中突然意识到
    所有数字替换,不就是找到所有数字后替换吗?那不就可以使用正则表达式

    带着这个想法,我去寻找对应的正则表达式

    解决代码

    var value = readline();
    
    console.log(value.replace(/(\d+)/g, (number) => {
        return `*${number}*`;
    } ))
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    没错,就两句话……提交答案成功的那一刻我也有一点点震惊……
    请添加图片描述

    思路历程

    其实开始我拿到这个题目的时候,我当时已经知道了通过正则可以替换了,但是就是差那么一个点,让我能解决这道题
    如何不只是替换,而是加上字符后替换
    于是发现可以使用函数去替换

    1.获取到所有数字

    首先第一步就是通过正则表达式获取到所有的数字,/(\d+)/g

    • (\d+):匹配一个或多个数字
    • /g:全局匹配,与replaceAll类似

    其实我知道如何去替换数字/[0-9]/g,也同样可以匹配到所有的数字,但是却不是我们想要的结果。
    通过/[0-9]/g去寻找数字,只能找到一个数字,因为只有一个数字是满足0-9这个条件的
    而通过(\d+)则可以匹配到连续的多个数字

    2.替换赋值

    找到所有数字之后,第二步就是如何去将数字替换成*数字*了。
    直接通过函数去处理

    (number) => {
        return `*${number}*`;
    }
    
    • 1
    • 2
    • 3

    因为第一步,我们已经找出了所有的连续的数字,那么我们就可以将这些找到的数字接起来,处理之后,再返回出去

    • number:所有的数字
    • *数字*形式返回
  • 相关阅读:
    1024——今天我们不加班
    Xcode,swift:Error Domain=kCLErrorDomain Code=1 "(null)"问题解决
    嵌入式数据库sqlite3子句和函数的使用基础(06)
    红绿正方形染色问题
    Spring基础只是—AOP的概念介绍
    TCP ZeroWindow 问题
    Web端和App端测试小结
    栈和队列-Java
    jvm内存和线程信息查看
    微服务项目:尚融宝(26)(后端搭建:Nuxt.js入门)
  • 原文地址:https://blog.csdn.net/qq_22841387/article/details/125599583