簡體   English   中英

JavaScript - 為什么使用 RegEx 拆分會產生空白數組?

[英]JavaScript - Why does split using RegEx produce blank array?

我正在處理一個 RegEx 問題,但我遇到了一些意外行為。
如果我用詞 cherters ( \\w ) 拆分“Hello”這個詞,我會得到空字符串數組:

"Hello".split(/\w/)

Array(6) [ "", "", "", "", "", "" ]

我希望你好。
為什么會發生這種情況?
我可以使用什么 RegEx 來創建所需的結果?

編輯

我想使用 RegEx 的全部原因是因為我有一個包含表情符號的字符串,所以Hello 🐒例如,我想拆分字符串但保留表情符號 (Unicode) 的數量。
我應該首先解釋這一點。

感謝大家的幫助,在我意識到matchsplit之間的區別之后,我很快就對 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM