解決split無法得到空字串問題
一.問題
在一次分割字串的時候,出現瞭如下問題:
無法分割出空字串,但當末尾位帶了非空字串又能分割了,如下圖:
二.定位分析
1.空字串不被解析
2.最後一個分隔符被分的字串不為空時,其餘空字串可被解析
原始碼分析
該方法的作用是:將一個字串分割為子字串,然後將結果作為字串陣列返回。
regularExpression:必選項。要被分解的 String 物件或文字,該物件不會被split方法修改。
limit:
可選項。字串或正規表示式物件,它標識了分隔字串時使用的是一個還是多個字元。如果忽略該選項,返回包含整個字串的單一元素陣列。
引數控制模式應用的次數,因此影響所得陣列的長度。如果該限制 n 大於 0,則模式將被最多應用 n - 1 次,陣列的長度將不會大於 n,而且陣列的最後一項將包含所有超出最後匹配的定界符的輸入。如果 n 為非正,那麼模式將被應用盡可能多的次數,而且陣列可以是任何長度。如果 n 為 0,那麼模式將被應用盡可能多的次數,陣列可以是任何長度,並且結尾空字串將被丟棄。
PS:當limit=0;和作用相同
當為0時:
當為2時:
當為6時:
當為8時:由於自由五個逗號,最多隻能分割成6個字串,即使你限定至多8個也只能輸出6個
三.解決方案
實際開發的時候不能保證最後一個分隔符被分的字串為不空,所以在用split()這個方法後再取被分隔的字串陣列的時候有時候就出現資料越界的問題(最後一個分隔符被分的字串為空)想到了一個方法是split([separator,[limit]]) ,後面把limit賦值成比該字串被分隔成字元陣列後陣列的長度大很多的值,這能保證所有為空的都能被解析,這正應了api裡的解釋
如果把limit設定為非正,也能全部解析如
四.注意
1、如果用“.”作為分隔的話,必須是如下寫法,String.split("\\."),這樣才能正確的分隔開,不能用String.split(".");
2、如果用“|”作為分隔的話,必須是如下寫法,String.split("\\|"),這樣才能正確的分隔開,不能用String.split("|");
相關文章
- gmail無法訪問問題解決--FGWAI
- 解決無法使用VI的問題
- 解決ASM無法啟動問題ASM
- SaaS無法解決“關鍵”問題
- Parallels Tools 無法安裝問題解決Parallel
- 解決Centos無法yum源的問題CentOS
- 解決寶塔皮膚無法訪問的問題?
- 解決codeblocks無法除錯的問題BloC除錯
- AD18無法模擬問題的解決
- 成功解決github無法顯示圖片問題Github
- 使用PorterDuff解決clipPath無法抗鋸齒問題
- 解決ubuntu下sublime無法輸入中文問題Ubuntu
- ajax資料無法更新問題原因及解決
- 解決VisualStudio無法除錯的問題除錯
- 解決OBJC_CLASS_$_MBProgressHUD無法引用的問題OBJ
- 解決無法自動掛載U盤問題
- 解決ASM磁碟組無法掛載的問題ASM
- 解決ORACLE無法啟動安裝的問題Oracle
- 關於listener無法啟動的問題解決
- jsp無法使用bean的問題 等到解決問題為止!!!!JSBean
- Windows無法配置此無線連線這個問題的解決辦法Windows
- swap空間不足問題解決
- 解決 Windows 無法訪問共享Windows
- session無法得到值Session
- 解決 raw.githubusercontent.com 無法訪問的問題Github
- 解決修改element-ui樣式無法生效問題UI
- 機器學習無法解決自然語言理解問題 - thegradient機器學習
- 手動下載 Chrome,解決 puppeteer 無法使用問題Chrome
- 解決properties、xml等配置檔案無法找到問題XML
- goland中npm無法使用的問題及解決方法GoLandNPM
- 解決jequry使用keydown無法跳轉的問題
- 記錄一次無法很好解決的問題
- 解決:angular js模板中無法使用ueditor的問題AngularJS
- 解決 Homestead 國外映象無法下載問題
- 解決windows8無法全屏顯示的問題Windows
- 解決克隆虛擬機器無法上網問題虛擬機
- 解決hyper v導致docker無法啟動問題Docker
- sqlplus無法啟動的問題及解決SQL