在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:@""];