首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检测NSString中是否存在不间断空格?

检测NSString中是否存在不间断空格?
EN

Stack Overflow用户
提问于 2013-06-21 09:32:19
回答 2查看 777关注 0票数 1

我正在尝试创建一个NSCharacterSet,我可以用它来测试一个字符是否为空格。此字符集:

代码语言:javascript
运行
复制
[NSCharacterSet whitespaceAndNewlineCharacterSet]

不包含不间断的空格,所以我尝试构建自己的空格字符集。

代码语言:javascript
运行
复制
myWhiteSpaceCharacterSet = [NSCharacterSet characterSetWithCharactersInString:@"  \n\r\t"];

我的字符集中的第一个字符是用空格键创建的空格。第二个字符在浏览器上显示为一个空格,但在XCode中显示为一个点,表示一个不间断的空格。我在Mac上按住Option键,然后按下空格键,就创建了它。

为了测试成员资格,我尝试了以下命令:

代码语言:javascript
运行
复制
NSString* nonBreakingSpace = @" ";
char nonBreakingSpaceChar = [nonBreakingSpace characterAtIndex:0];
if ([myWhiteSpaceCharacterSet characterIsMember:nonBreakingSpaceChar]) {
  NSLog(@"YES");
} else {
  NSLog(@"NO");
}

NSString nonBreakingSpace中的角色是使用选项-空格键创建的。然而,这段代码输出的是NO。

你知道我可能做错了什么吗?或者,是否有人知道现有的字符集包含所有可能的空格类型?我肯定我错过了一些..。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-21 11:53:52

使用unichar而不是char。这是characterAtIndex:的返回类型,不间断的空格字符不适合一个字节,所以当您隐式地将其转换为char时,该值将被截断。

票数 3
EN

Stack Overflow用户

发布于 2013-06-21 11:10:14

您可以在NSString中搜索任何如下所示的空格:

代码语言:javascript
运行
复制
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:@""];来删除空格

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17226403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档