我正在尝试创建一个NSCharacterSet,我可以用它来测试一个字符是否是空格。这个字符集:
[NSCharacterSet whitespaceAndNewlineCharacterSet]
不包含不间断的空格,所以我正在尝试构建自己的空白字符集。
myWhiteSpaceCharacterSet = [NSCharacterSet characterSetWithCharactersInString:@" \n\r\t"];
我的字符集中的第一个字符只是用空格键创建的空格。第二个字符似乎是浏览器上的空格,但在XCode中它显示为一个点,表示一个不间断的空格。我通过按住Mac上的选项键然后按空格键来创建它。
为了测试会员资格,我尝试了这个:
NSString* nonBreakingSpace = @" ";
char nonBreakingSpaceChar = [nonBreakingSpace characterAtIndex:0];
if ([myWhiteSpaceCharacterSet characterIsMember:nonBreakingSpaceChar]) {
NSLog(@"YES");
} else {
NSLog(@"NO");
}
NSString nonBreakingSpace中的字符是使用option-spacebar创建的。然而,此代码打印NO。
知道我可能做错了什么吗?或者有没有人知道现有的字符集包括所有可能的空格?我确定我错过了一些......
谢谢!
答案 0 :(得分:3)
使用unichar
代替char
。这是characterAtIndex:
的返回类型,并且不间断空格字符不适合一个字节,因此当您隐式将其强制转换为char
时,该值将被截断。
答案 1 :(得分:-1)
您可以在NSString中搜索以下任何空格:
NSString* string;
string = [[NSString alloc] initWithFormat:@"Hello World"];
if ([string rangeOfString:@" "].location == NSNotFound) {
NSLog(@"Has space");
}
else {
NSLog(@"Doesn't have space");
}
关于这一点的好处是,一旦你发现NSStrin有空格,你可以通过调用[string rangeOfString@" "];
找到它,它将返回位于空间位置的NSRange。您甚至可以通过调用string = [string stringByReplacingCharactersInRange:[string rangeOfString:@" " withString:@""];