簡體   English   中英

java string.split()問題

[英]java string.split() issue

在解決UVa問題時 ,我得到了這個String ,我需要將其拆分為一個String數組,以刪除#@

Brazil#2@1#Scotland

我在使用時遇到了ArrayOutOfBounds異常,

matchSummary.split("#@");

在研究了這個UVa問題的解決方案之后,我發現其他經驗豐富的競爭性程序員都這樣做了,

string.split("[#@]");

這通過了在線法官的裁決。

我無法將此String拆分為上述String

有關此問題的完整解決方案, 請參見此處- 參見

誰能向我解釋為什么我的代碼與split("[#@]");

基本上使用: split("#@");

僅在同時匹配字符# @時才嘗試拆分

通過使用:

split("[#@]");

您正在從班級中選擇在#@上分割

Java正則表達式中 ,括在方括號[]中的字符稱為字符類。

這個...

String input = "Brazil#2@1#Scotland";
System.out.println(Arrays.toString(input.split("[#@]")));

...將使用定界符#@分隔String ,而不考慮順序,並輸出:

[Brazil, 2, 1, Scotland]

在這種情況下等效於:

System.out.println(Arrays.toString(input.split("#|@")));

但是,用不被[]括起來的#@拆分將搜索#后跟@的序列。

這本身不會觸發任何ArrayIndexOutOfBoundsException ,它只會返回一個包含原始輸入String的大小為1的array

但是,您可能稍后在代碼中假設array大小為> 1 ,因此為Exception

[#@]表示將在#@上分割。

有關更多信息: http : //docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

split函數給您一個錯誤的原因是因為@和#不在字符串中,我建議使用StringTokenizer來拆分字符串。

因此,創建它的新實例-StringTokenizer s = new StringTokenizer(“ Brazil#2 @ 1#Scotland”);

然后將分度符設置為@,然后將其拆分,然后用分度符#進行拆分

暫無
暫無

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

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