表示数字_牛客题霸_牛客网 (nowcoder.com)
题目要求将所有的数字替换成*数字*
原本这道题我准备就常规使用c++去写的,但是写的过程中突然意识到
所有数字替换,不就是找到所有数字后替换吗?那不就可以使用正则表达式
了
带着这个想法,我去寻找对应的正则表达式
var value = readline();
console.log(value.replace(/(\d+)/g, (number) => {
return `*${number}*`;
} ))
没错,就两句话……提交答案成功的那一刻我也有一点点震惊……
其实开始我拿到这个题目的时候,我当时已经知道了通过正则可以替换了,但是就是差那么一个点,让我能解决这道题
如何不只是替换,而是加上字符后替换
于是发现可以使用函数去替换
首先第一步就是通过正则表达式获取到所有的数字,/(\d+)/g
(\d+)
:匹配一个或多个数字/g
:全局匹配,与replaceAll类似其实我知道如何去替换数字
/[0-9]/g
,也同样可以匹配到所有的数字,但是却不是我们想要的结果。
通过/[0-9]/g
去寻找数字,只能找到一个数字,因为只有一个数字是满足0-9这个条件的
而通过(\d+)
则可以匹配到连续的多个数字
找到所有数字之后,第二步就是如何去将数字替换成*数字*
了。
直接通过函数去处理
(number) => {
return `*${number}*`;
}
因为第一步,我们已经找出了所有的连续的数字,那么我们就可以将这些找到的数字接起来,处理之后,再返回出去
number
:所有的数字*数字*
形式返回