開發時做字串分割為陣列時遇到這樣的問題,分割符後是空串,沒有作為元素存到陣列中,如下:
string name = "a,b,c,r,,,,";
string names1 = name.split(",");
期待得到的陣列長度是8,結果得到的長度是4,因為結尾的空字串都被丟棄了。
後來查到該方法還有乙個過載,split(string regex, int limit) 可以解決這個問題。
limit 引數控制模式應用的次數,如果這個限制 n 大於 0,則模式將被最多應用 n - 1 次,陣列的長度將不會大於 n ,而且陣列的最後一項將包含所有超出最後匹配的定界符的輸入。如果 n 為非正數,那麼模式將被應用盡可能多的次數,而且陣列可以是任何長度。如果 n 為 0,那麼模式將被應用盡可能多的次數,陣列可以是任何長度,並且結尾空字串將被丟棄。
測試程式如下:
string name = "a,b,c,r,,,,";
string names1 = name.split(",");
string names2 = name.split(",",2);
string names3 = name.split(",", -1);
string names4 = name.split(",", 0);
system.out.println("names1長度:"+names1.length);
arrays.stream(names1).foreach(item -> system.out.print(" | " + item));
system.out.println();
system.out.println("names2長度:"+names2.length);
arrays.stream(names2).foreach(item -> system.out.print(" | " + item));
system.out.println();
system.out.println("names3長度:"+names3.length);
arrays.stream(names3).foreach(item -> system.out.print(" | " + item));
system.out.println();
system.out.println("names4長度:"+names4.length);
arrays.stream(names4).foreach(item -> system.out.print(" | " + item));
system.out.println();
執行結果:
names1長度:4
| a | b | c | r
names2長度:2
| a | b,c,r,,,,
names3長度:8
| a | b | c | r | | | |
names4長度:4
| a | b | c | r
Oracle PL SQL中對空字串的判斷
目錄寫在最前面 在oracle 11g中乙個空字串和零個字元是沒有區別的。今天在使用oracle編寫pl sql程式的時候,發現乙個問題,我的表中本身不是空字串,但是在使用if語句判斷 字段 的時候,if語句竟然不會生效,很是納悶!後來查詢相關資料發現 oracle建議您不要將空字串視為空字串 那麼...
空字元與空格字元 NULL 空字串
在許多的程式語言內,空字串的標記為兩個雙引號 而null又有以下理解 1.字面理解,null就是無效的 無價值的 2.在程式設計中,變數以null結尾,表示其後沒有可用的資料,資料讀取在此結束。3.null在資料庫中表示不知道 unknown 的資料,主要有3種意思 a 知道資料存在,但不知道具體值...
字串和物件對空
字串判空 常用,效率高 if str null str.length 0 常用,效率也高 if str null str 高大上,效率不明 stringutils.isblank str 效率高,有相容性問題 stringutils.isempty str 常用,效率低 str null str.e...