![](/img/trans.png)
[英]Why does JavaScript split() produce different output with different variable names?
[英]JavaScript - Why does split using RegEx produce blank array?
我正在處理一個 RegEx 問題,但我遇到了一些意外行為。
如果我用詞 cherters ( \\w
) 拆分“Hello”這個詞,我會得到空字符串數組:
"Hello".split(/\w/)
Array(6) [ "", "", "", "", "", "" ]
我希望你好。
為什么會發生這種情況?
我可以使用什么 RegEx 來創建所需的結果?
我想使用 RegEx 的全部原因是因為我有一個包含表情符號的字符串,所以Hello 🐒
例如,我想拆分字符串但保留表情符號 (Unicode) 的數量。
我應該首先解釋這一點。
感謝大家的幫助,在我意識到match
和split
之間的區別之后,我很快就對 Emoji 問題進行了排序:
"Hello 🐒".match(/(\w)|([^\u0000-\u007F]+)/g)
Array(6) [ "H", "e", "l", "l", "o", "🐒" ]
您混淆了split
(匹配分隔符)和match
(匹配內容)。 隨着split
您確定哪些實際的內容分離,因此比賽本身將被排除在外。 通過match
您可以獲得您真正想要的東西。 請注意,對於match
您需要使用g
修飾符明確表示您想要所有這些:
let arr = "Hello".match(/\\w/g); // You need the g[lobal] modifier console.log(arr); // ["H","e","l","l","o"]
您不需要正則表達式,您可以拆分空字符串以獲取字符:
var result = "Hello".split("") console.log(result)
這正是你所做的。 查找拆分的值是一個單詞字符,您可以准確地獲得所有字符之間的空格。
console.log("Hello".split(/\\w/));
要得到你想要的,要么使用match
console.log("Hello".match(/\\w/g)); console.log("Hello world!".match(/\\w/g));
或由之間的空格分割,一個空字符串。
console.log("Hello".split(''));
你得到一個空數組的原因是因為split()
的第一個參數搜索一個模式,在這種情況下模式是一個字符, split 將單詞Hello
除以每個字符,這就是為什么你得到空字符串來實現你想要什么使用 split("")
var res = "Hello".split("") console.log(res)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.