我正在尝试创建一个NSCharacterSet,我可以用它来测试一个字符是否为空格。此字符集:
[NSCharacterSet whitespaceAndNewlineCharacterSet]不包含不间断的空格,所以我尝试构建自己的空格字符集。
myWhiteSpaceCharacterSet = [NSCharacterSet characterSetWithCharactersInString:@" \n\r\t"];我的字符集中的第一个字符是用空格键创建的空格。第二个字符在浏览器上显示为一个空格,但在XCode中显示为一个点,表示一个不间断的空格。我在Mac上按住Option键,然后按下空格键,就创建了它。
为了测试成员资格,我尝试了以下命令:
NSString* nonBreakingSpace = @" ";
char nonBreakingSpaceChar = [nonBreakingSpace characterAtIndex:0];
if ([myWhiteSpaceCharacterSet characterIsMember:nonBreakingSpaceChar]) {
NSLog(@"YES");
} else {
NSLog(@"NO");
}NSString nonBreakingSpace中的角色是使用选项-空格键创建的。然而,这段代码输出的是NO。
你知道我可能做错了什么吗?或者,是否有人知道现有的字符集包含所有可能的空格类型?我肯定我错过了一些..。
谢谢!
发布于 2013-06-21 11:53:52
使用unichar而不是char。这是characterAtIndex:的返回类型,不间断的空格字符不适合一个字节,所以当您隐式地将其转换为char时,该值将被截断。
发布于 2013-06-21 11:10:14
您可以在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:@""];来删除空格
https://stackoverflow.com/questions/17226403
复制相似问题