Java Sting類關於split處理空串以及擷取最大數
split一共有兩個方法,
①.public String[] split(String regex,int limit)
先說第一個,有兩個引數,api上的例子:
public String[] split(String regex,int limit)
根據匹配給定的正規表示式來拆分此字串。
此方法返回的陣列包含此字串的每個子字串,這些子字串由另一個匹配給定的表示式的子字串終止或由字串結束來終止。
陣列中的子字串按它們在此字串中的順序排列。如果表示式不匹配輸入的任何部分,則結果陣列只具有一個元素,即此字串。
limit 引數控制模式應用的次數,因此影響結果陣列的長度。如果該限制 n 大於 0,則模式將被最多應用 n - 1 次,陣列的長度將不會大於 n,而且陣列的最後項將包含超出最後匹配的定界符的所有輸入。
如果 n 為非正,則模式將被應用盡可能多的次數,而且陣列可以是任意長度。如果 n 為零,則模式將被應用盡可能多的次數,陣列可有任何長度,並且結尾空字串將被丟棄。
例如,字串 "boo:and:foo" 使用這些引數可生成下列結果:
Regex Limit 結果
: 2 { "boo", "and:foo" }
: 5 { "boo", "and", "foo" }
: -2 { "boo", "and", "foo" }
o 5 { "b", "", ":and:f", "", "" }
o -2 { "b", "", ":and:f", "", "" }
o 0 { "b", "", ":and:f" }這種形式的方法呼叫 str.split(regex, n) 產生與以下表示式完全相同的結果:
Pattern.compile(regex).split(str, n)
引數:
regex - 定界正規表示式
limit - 結果閾值,如上所述
返回:
字串陣列,根據給定正規表示式的匹配來拆分此字串,從而生成此陣列
丟擲:
PatternSyntaxException - 如果正規表示式的語法無效
其實上面說的已經很詳細了,說到底就是比常用的多了一個limit引數。但是引數怎麼用。
1.當引數為整數的時候,只需要擷取前幾個,需要幾個擷取幾個,這個不用多說。
String line = "aa,bb,cc,dd,,,,";System.out.println(line.split(",",6).length);
輸出結果為6,limit引數指定幾個,輸出幾個,最多為8個
2.當引數為零的時候,和split()一樣,截圖儘可能多的字串(其實不是最多的)。
String line = "aa,bb,cc,dd,,,,";System.out.println(line.split(",",0).length);
輸出結果為4
3.當引數為負的時候,即使後面有空的串,也會輸出到最大
String line = "aa,bb,cc,dd,,,,";System.out.println(line.split(",",-1).length);
輸出結果為8
可能大家都看出來了,以逗號切割的一般都是CSV格式的檔案,當遇到讀取每一行記錄的時候,不加引數,就會遇到這種情況,讀取不完整,然後CSV資料格式驗證的時候,驗證資料不合法。
String line = "aa,bb,cc,dd,,,,";
String mi[] = (line).split(sp);
if (mi.length != 8)return;
實際結果 mi.length = 4,所以通不過驗證直接非法資料
②其實就是當limit引數為0的時候獲得的結果,將api的介紹放上來,就不多說了。
public String[] split(String regex)
根據給定的正規表示式的匹配來拆分此字串。
該方法的作用就像是使用給定的表示式和限制引數 0 來呼叫兩引數 split 方法。因此,結果陣列中不包括結尾空字串。
例如,字串 "boo:and:foo" 產生帶有下面這些表示式的結果:
Regex 結果
: { "boo", "and", "foo" }
o { "b", "", ":and:f" }
引數:
regex - 定界正規表示式
返回:
字串陣列,根據給定正規表示式的匹配來拆分此字串,從而生成此陣列。
丟擲:
PatternSyntaxException - 如果正規表示式的語法無效
相關文章
- Oracle空串與null的處理OracleNull
- 關於一類資料處理
- 求助:關於“JAVA事件處理模式”Java事件模式
- 關於小數中0的處理
- 關於批處理中的變數變數
- Golang 字串分割,替換和擷取 strings.SplitGolang字串
- 數學處理類
- 聊聊介面最大併發處理數
- 關於OT分類的一些處理
- Java--- 關於null的處理若干方法JavaNull
- windows批處理之五-for語句中的檔名擷取Windows
- Java學習關於隨機數工具類--Random類Java隨機random
- 關於split的使用
- split用法與影像預處理
- RMAN處理split block問題BloC
- 關於jdon的HibernateTemplate類的事務處理
- Java 圖片裁剪,擷取Java
- Java 中關於 null 物件的容錯處理JavaNull物件
- 關於java程式異常處理(講義)(轉)Java
- 工具類,關於手工讀取 properties檔案引數
- 關於Servlet的原理以及常用類Servlet
- java 圖片水印處理類Java
- java 檔案處理 工具類Java
- 關於Disruptor處理流程
- shell 擷取變數的字串變數字串
- 關於aud$物件相關處理物件
- 關於Moment.js(JavaScript 日期處理類庫)的使用JSJavaScript
- java中大數處理和高精度小數處理(so easy)Java
- 關於資料庫檔案最大數資料庫
- split使用和特殊使用(包括擷取第一個字元後的資料)字元
- 不停機處理oracle超過最大processes數故障Oracle
- 分割槽表split操作及maxvalue處理
- 關於GCD多工處理GC
- 關於php rsa加密處理PHP加密
- 關於中文URL的處理
- 關於 Date 函式獲取各類時間/日期/天數函式
- Java String類,字串常量池,建立方法,字串的獲取,擷取,轉換,分割。Java字串
- mysql關於最大連線數、最大併發執行緒數的區別MySql執行緒