判断字符串中是否包含空格代码的强壮性

NSString的类目中的判断方法如下:

  • (BOOL)isNoBlack {
    NSCharacterSet* charSet = [NSCharacterSet whitespaceAndNewlineCharacterSet];
    for (int i = 0; i < self.length ; i++) {

    unichar ch = [self characterAtIndex:i];
    if ([charSet characterIsMember:ch]) {
        return NO;
    }

    }
    return YES;

}
现在的疑问是如果字符串中包含表情符号,characterAtIndex: 就会把字符拆分,如果被拆分的表情符号或者其他字符是空格或者换行就会发生错误;

下面是另一种方法

  • (BOOL)isContainBlack {
    NSRange blackRange = [self rangeOfCharacterFromSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    if(blackRange.location == NSNotFound) {

     return NO;

    }else{

     return YES;

    }

}
不知各位有没有更好的思路?或者对上面的方法的看法

阅读 3k
1 个回答

麻烦

NSString提供了- (BOOL)containsString:(NSString *)str API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0));方法判断特定字符串存在,要判空格使用[str containsString:@" "],判回车使用[str containsString:@"\n"]
对于表情类如kaomoji(O(∩_∩)O~实际是文字),如果是O(∩ _ ∩)O~,也会判断出包含空格
emoji(?实际是Unicode编码),不含空格

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题