關於NSString判空與移除字符串首尾空白方法的設計
背景
時常會遇到NSString實例對象須要判空以及刪除首尾空白字符的需求。
發現許多工程師因不恰當的處理以上兩種需求,引起了APP崩潰問題。
緣由可能來源以下:
1. 不太理解,什麼叫空字符串。
2. 不恰當的刪除字符串首尾空白。
3. 不恰當的返回刪除字符串首尾空白以後的值。
判空設計
什麼是空字符串?
內容爲空的字符串即length==0的字符串或者任何其餘非NSString類型的變量。
考慮到,對nil發送消息將不會有任何響應,返回值仍然爲0((id)0)。
所以,從以上方面來看NSString Category應該添加以下這樣的判空方法。
+(BOOL)isEmptyString:(NSString *)string{
if(string &&
[string isKindOfClass:[NSString class]] &&
string.length>0){
return NO;
}else{
return YES;
}
}
刪除字符串首尾空白設計
不恰當的刪除字符串首尾空白。
不恰當的返回刪除字符串首尾空白以後的值。
所以,從以上方面來看NSString Category應該添加以下方法。
+(NSString *)stringByTrimmingBothEndWhiteSpace:(NSString *)string{
if([NSString isEmptyString:string]){
//最好不要使用nil,由於這改變了類型,會引發bug。
//此處採用NSString初始化返回值(一個空字符串),至關於類型轉換(將可能的任何其餘類型轉換爲字符串類型)。
return [[NSString alloc] init];
}else{
return [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}
}