关于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]];
}
}