簡體   English   中英

Java:拆分包含特殊字符的字符串

[英]Java : split a string that containing special characters

我有一個像||81|||01||的字符串 我想用|分割字符串 符號。

我這樣做了,

String str = "||81|||01||";
System.out.println(str .split("\\|").length); //printing 6 . But I am expecting 8

這段代碼有什么問題? | 如何將該字符串與該字符分開,以便得到預期的長度( 8 )?

使用split("\\\\|")split("\\\\|", 0) ,其中limit參數0告訴函數“省略尾隨空字符串”。 所以你錯過了最后兩個空字符串。 使用雙參數版本並提供負數以獲取所有部分(甚至尾隨空部分):

str.split("\\|", -1)

打印:

System.out.println(Arrays.toString(str.split("\\\\|")));

你會明白它為什么要打印6。

您可以嘗試使用public String [] split(String regex,int limit)執行您想要的操作:

limit參數控制模式的應用次數,因此會影響結果數組的長度。

所以你應該這樣做:

System.out.println(str.split("\\|", -1).length);

現在,打印數組將打印:

[, , 81, , , 01, , ]如你所料。

您還可以使用string.split(Pattern.quote(“|”), - 1)在特殊字符上拆分字符串。

你需要使用:

str.split("\\|", -1)

第二個參數是limit 來自javadoc:

limit參數控制模式的應用次數,因此會影響結果數組的長度。 如果限制n大於零,那么模式將最多應用n - 1次,數組的長度將不大於n,並且數組的最后一個條目將包含除最后一個匹配分隔符之外的所有輸入。 如果n是非正數,那么模式將被應用盡可能多的次數,並且數組可以具有任何長度。 如果n為零,那么模式將被應用盡可能多的次數,該數組可以具有任何長度,並且將丟棄尾隨的空字符串。

str.split("\\\\|", -1)將執行必要的操作。 可能重復: 這里

String str = "||81|||01||"; System.out.println(str.split("\\\\|", 8).length);

split的第二個參數指定最大匹配數。 單個參數拆分就像調用split(str,0)一樣,它會留下尾隨字符串。 參見兩者的javadoc以獲得更多解釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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