前言:
判断字符串为空:看似简单的问题,有人会说不就使用[string isEqualToString:@""]
或者更简单的string.text == nil
就行了嘛。但是并没有考虑到其中存在的一些问题,例如当字符串中存在空格
或者换行
时或者当请求后台数据时得到的是进行JSON
解析的时候, 如果解析出的NSDictionary
中某个key
对应的value
为空, 则系统会把它处理为NSNull
类的单例对象。这些情况下,上面的判断方法就不会起到作用。
具体实现:
+ (BOOL)isBlankString:(NSString *)aStr {
if (!aStr) {
return YES;
}
if ([aStr isKindOfClass:[NSNull class]]) {
return YES;
}
NSCharacterSet *set = [NSCharacterSet whitespaceAndNewlineCharacterSet];
NSString *trimmedStr = [aStr stringByTrimmingCharactersInSet:set];
if (!trimmedStr.length) {
return YES;
}
return NO;
}
具体解释:
代码中包含了NSString为空的三种情况:
1.NSString对象没有初始值。
if (!aStr) {
return YES;
}
2.期望得到一个NSString字符串, 但却不幸遇到了NSNull。
if ([aStr isKindOfClass:[NSNull class]]) {
return YES;
}
3.字符串中除了空格和换行, 不包含任何其他字符。
对于这种情况, 可以借助字符集类NSCharacterSet
和NSString
类的一个方法来做判断, 具体代码如下:
// 创建一个字符集对象, 包含所有的空格和换行字符
NSCharacterSet *set = [NSCharacterSet whitespaceAndNewlineCharacterSet];
// 从字符串中过滤掉首尾的空格和换行, 得到一个新的字符串
NSString *trimmedStr = [aStr stringByTrimmingCharactersInSet:set];
// 判断新字符串的长度是否为0
if (!trimmedStr.length) {
// 字符串为空
}
网友评论