[英]Java string split length
System.out.println("neon.mems.cmu.edu/people/".split("/").length); // output is 2
我正在做一些URL處理。 令我驚訝的是,我剛得到上面的結果。 我認為元素的數量可以是分離器的數量加一。
我直到現在都沒有意識到最后一個空字符串(或者只是null
)是從拆分數組中刪除的。 我想知道每種編程語言是否都是這種情況。
不,並非每種編程語言都如此,也沒有通用規范,因此沒有理由。
走
a := strings.Split("neon.mems.cmu.edu/people/", "/")
fmt.Println(len(a)) // prints 3
Java腳本
在瀏覽器的控制台中輸入以下內容:
"neon.mems.cmu.edu/people/".split('/')
結果是
["neon.mems.cmu.edu", "people", ""]
匹配為空時,您應該怎么做並不是split
概念的明顯內容或固有內容。 一個證明是,舊的Internet Explorer版本確實刪除了那些空匹配項 。
為什么要丟棄空字符串?
String#split(regx)
內部調用String#split(regx,0)
,該String#split(regx,0)
執行Pattern.compile(regex).split(this, limit);
實際上- 代碼段
if (limit == 0)
while (resultSize > 0 && matchList.get(resultSize-1).equals(""))
resultSize--;
如果limit為0,則從resultSize丟棄空字符串。
如何獲得理想的結果?
String#split(regx,limit)
使用可得到所需的結果。
System.out.println("neon.mems.cmu.edu/people/".split("/",3).length);
結果:
3
關於語言規范,我同意@dystroy
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.