[英]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.