繁体   English   中英

在javascript中用逗号分割字符串中的字符

[英]Split characters in a string with a comma in javascript

我正在尝试编写一个正则表达式函数,该函数返回逗号分隔字符串中的所有数字:

function printDigits() {
   var result = sentence.replace(/[^0-9]/g, '').split(",")
    console.log(result)
}

但它只是打印出一个字符串,而不是用逗号分隔的数字。 有什么办法可以解决这个问题吗?

输入:“5om3 wr173 w0rd5 u51n9 numb3r5。”

预期输出:“5,3,1,7,3,0,5,5,1,9,3,5”

split不是这样工作的。 它按输入中已有的分隔符进行拆分。 要将字符串拆分为单个字符,请使用split('') ,然后用逗号连接单个字符:

   var result = sentence.replace(/[^0-9]/g, '').split('').join(',');

您可以使用

sentence.match(/\d/g).join(",")

这里,

  • sentence.match(/\\d/g) - 从字符串中提取每个单独的数字
  • .join(",") - 将数组项连接成一个逗号分隔的字符串。

请参阅 JavaScript 演示:

 var sentence = "5om3 wr173 w0rd5 u51n9 numb3r5."; console.log(sentence.match(/\\d/g).join(",")); // -> 5,3,1,7,3,0,5,5,1,9,3,5

这是另一个使用纯正则表达式并且不需要.join()调用的变体:

sentence.replace(/\D+|(\d)(?=\d)/g, '$1,');

这将用逗号替换任何非数字字符字符串。 它还会定位两个数字之间的位置并在它们之间添加一个逗号。

模式分解:

  • \\D+ - 匹配一个或多个非数字字符。
  • | - 要么...
  • (\\d) - 匹配一位数字并将其捕获在第 1 组中。
  • (?=\\d) - 后跟另一个数字。
  • 替补:
    • $1, - 替换$1,组中捕获的任何内容,加上一个逗号。

这是一个完整的演示:

 var sentence = "5om3 wr173 w0rd5 u51n9 numb3r5"; var result = sentence.replace(/\\D+|(\\d)(?=\\d)/g, '$1,'); console.log(result); // 5,3,1,7,3,0,5,5,1,9,3,5

减速机解决方案

 const x = `5om3 wr173 w0rd5 u51n9 numb3r5` .split('') .reduce((acc, val) => val.trim().length && !isNaN(+val) ? [...acc, +val] : acc, []); console.log(`${x}`);

或者干脆

 console.log(`${`5om3 wr173 w0rd5 u51n9 numb3r5`.match(/\\d/g)}`);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM