String split 對空字元的處理

2021-09-08 20:18:15 字數 1506 閱讀 2735

開發時做字串分割為陣列時遇到這樣的問題,分割符後是空串,沒有作為元素存到陣列中,如下:

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...