在Objective-C中查找非间距字符
如何检查我的在Objective-C中查找非间距字符,objective-c,nsstring,thai,Objective C,Nsstring,Thai,如何检查我的NSString中的字符是否为非空格字符 例如: NSString *string3 = @"เบียร์เหล้า"; // 12345678 <- only take up 8 spaces 那Objective-C呢 多亏了巴达斯 NSCharacterSet *characterSet = [NSCharacterSet nonBaseCharacterSet]; for (int i = 0; string3.length &
NSString
中的字符是否为非空格字符
例如:
NSString *string3 = @"เบียร์เหล้า";
// 12345678 <- only take up 8 spaces
那Objective-C呢
多亏了巴达斯
NSCharacterSet *characterSet = [NSCharacterSet nonBaseCharacterSet];
for (int i = 0; string3.length > i; i++)
{
NSString *string = [string3 substringWithRange:NSMakeRange(i, 1)];
NSRange letterRange = [string rangeOfCharacterFromSet:characterSet];
if (letterRange.location != NSNotFound)
{
NSLog(@"non base character set");
}
else
{
NSLog(@"normal");
}
}
您将发现哪个角色没有占用空间。
另一种方法是,您可以使用下面的代码找出总的非间隔字符
NSString *newString = [[string3 componentsSeparatedByCharactersInSet:
[[NSCharacterSet nonBaseCharacterSet] invertedSet]] componentsJoinedByString:@""];
因此,对于本例,新闻字符串长度为3。这就是我要找的。
谢谢大家。您可以使用检索Unicode标记类别中的字符集
NSCharacterSet
提供了测试给定字符是否为集合成员的功能,NSString
提供了在字符串中查找特定字符的功能,这些字符是(或不是)给定NSCharacterSet
的成员,可用于检索Unicode标记类别中的字符集NSCharacterSet
提供了测试给定字符是否为集合成员的功能,NSString
提供了在字符串中查找特定字符的功能,这些字符是(或不是)给定NSCharacterSet
的成员您的字符串只有1个空格。删除后的长度是11。我想我会修改这个问题,让它更清楚。这是因为不同的unicode有不同的权重,就像你在使用马来语或其他语言,而英语有其他unicode。这就是为什么我还用阿拉伯语测试了它,它显示了不同的长度。通过使用-[NSString rangeOfCharacterFromSet:options:range://code>,可以避免这样分配临时字符串。你可以给这个方法一个范围,指示在搜索中要考虑哪些字符。你的字符串只有1个空间。删除后的长度是11。我想我会修改这个问题,让它更清楚。这是因为不同的unicode有不同的权重,就像你在使用马来语或其他语言,而英语有其他unicode。这就是为什么我还用阿拉伯语测试了它,它显示了不同的长度。通过使用-[NSString rangeOfCharacterFromSet:options:range://code>,可以避免这样分配临时字符串。您可以给该方法一个范围,指明在搜索中要考虑哪些字符。
NSString *newString = [[string3 componentsSeparatedByCharactersInSet:
[[NSCharacterSet nonBaseCharacterSet] invertedSet]] componentsJoinedByString:@""];