簡體   English   中英

Java字符串分割長度

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

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