如何從下面的字串中選擇所有數字?
str = "1,2, 4,5 ,6 7 8 9 10, 11, 13"
我嘗試使用 split(',') 但它不適用于空格。
因為它也包含空格。
uj5u.com熱心網友回復:
只需做一個正則運算式并匹配數字
console.log("1,2, 4,5 ,6 7 8 9 10, 11, 13".match(/\d /g).map(Number));
uj5u.com熱心網友回復:
split 可以采用正則運算式。因此,您可以給它一個正則運算式,以穩健地定義您的定界語法。(...對于閱讀此問題的其他人來說可能相似但略有不同,這就是我提供此答案的原因。)
我懷疑您實際上最多允許使用 1 個逗號,前后可選空格,或者1 個或多個空格。但是例如,我懷疑您不會將兩個或多個逗號解釋為單個分隔符,而更可能是輸入文本中的錯誤。例如,可能需要解釋1,,2為[1, 0, 2]。(畢竟,在 JavaScript 中Number("")是0)。這完全取決于您為自己選擇的語法。
這樣的正則運算式可以是:
(?:\s*,\s*)|\s
這里發生了很多事情:
- 當您使用正則運算式拆分時,捕獲的組將保留在輸出中,因此您必須使用
?:非捕獲組。 \s*,\s*必須出現\s在交替 (|) 構造中,因為它需要被貪婪地匹配以形成更長的分隔符(如果有分隔符,則在分隔符中包含逗號,而不僅僅是它之前的空格)。- 這應該適用于
3.14,-1,1.21e9,0x42等數字Infinity。
console.log("1,2, 4,5 ,6 7 8 9 10, 11, 13".split(/(?:\s*,\s*)|\s /).map(Number));
如果您確實想,,成為單個分隔符,則正則運算式可能只是[,\s]
uj5u.com熱心網友回復:
不使用正則運算式:
string str = "1,2, 4,5 ,6 7 8 9 10, 11, 13";
List<string> list = str.Replace(" ", ",").Split(',').ToList();
list.RemoveAll(x => x == string.Empty);
串列包含:1,2,4,5,6,7,8,9,10,11,13
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/448825.html
標籤:javascript 数组 正则表达式 细绳
下一篇:兩個字串之間的正則運算式子字串
