在程式中使用乙個字串之前, 判斷它是否為空是很有必要的, 否則程式就可能會出現bug或者崩潰.
乙個nsstring字串為空, 通常意味著四種情況:
1.nsstring物件沒有初始值
nsstring *astr; // 宣告了乙個字串變數, 未設定初始值
此時, 要判斷它是否為空, 只需這樣:
if (astr == nil)
我曾經查閱過很多文章, 發現幾乎所有人都是這樣寫的:
if (astr == nil || astr == null)
多了乙個判斷條件, astr == null, 個人認為這雖然顯得更謹慎一些, 但卻是不必要的. 因為null是表示c語言中的空指標, 而nsstring字串是objective-c中的物件, 它的空值就用nil來表示. 雖然nil和null在數值上都等於0, 但是它們的應用場景還是有些區別的. 既然如此, 就很容易想到一種更為簡潔通用的寫法:
if (!astr)
只要astr的指標值為0, 就可斷定它為空, 乾淨利落而又考慮全面.
2.期望得到乙個nsstring字串, 但卻不幸遇到了nsnull
if ([astr iskindofclass:[nsnull class]])
3.字串中沒有任何字元, 也就是長度為0
判斷這種情況就比較簡單了:
if (!astr.length)
4.字串中除了空格和換行以外沒有任何字元
對於這種情況, 可以借助字符集類nscharacterset和nsstring類的乙個方法來做判斷, 具體**如下:
// 建立乙個字符集物件, 包含所有的空格和換行字元
nscharacterset *set = [nscharacterset whitespaceandnewlinecharacterset];
// 從字串中過濾掉首尾的空格和換行, 得到乙個新的字串
nsstring *trimmedstr = [astr stringbytrimmingcharactersinset:set];
// 判斷新字串的長度是否為0
if (!trimmedstr.length)
實際上, 第三種情況和第四種情況在本質上是一樣的, 都表示字串中沒有任何有效的字元. 我們可以省去第三步判斷, 直接進行第四步判斷, 也能得到正確的結果, 之所以加上第三步的判斷, 是為了提高效能, 避免第四步不必要的字串處理過程, 節省時間和空間開銷.
好了, 至此就得到全面判斷字串為空的方法了:
- (bool)isblankstring:(nsstring *)astr
if ([astr iskindofclass:[nsnull class]])
if (!astr.length)
nscharacterset *set = [nscharacterset whitespaceandnewlinecharacterset];
nsstring *trimmedstr = [astr stringbytrimmingcharactersinset:set];
if (!trimmedstr.length)
return
no;}
iOS開發中判斷字串為空的方法
前言 判斷字串為空 看似簡單的問題,有人會說不就使用 string isequaltostring 或者更簡單的string.text nil就行了嘛。但是並沒有考慮到其中存在的一些問題,例如當字串中存在空格或者換行時或者當請求後台資料時得到的是進行json解析owbyhdn的時候,如果解析出的ns...
C 字串為空判斷
字串 字串為空情況有4種,如下 string str1 string str2 string str3 string.empty string str4 null 判斷方法 c 判斷字串的string類的方法有2個,定義如下 摘要 指示指定的字串是 null 還是 system.string.emp...
判斷字串是否為空
判斷字串是否為空是在 android 開發中是最長用的乙個判斷,判斷時也經常會看到有不同的判斷方式,今天專門研究了一下,記錄下來。先定義乙個字串,private string s 這種定義方式是我們學用的方式,那麼這樣定義時在字串時,該怎麼判斷它是不是空呢?來用 驗證一下 if s null els...