1

如何检查我的字符NSString是否为非空格字符?

例如:

NSString *string3 = @"เบียร์เหล้า";
//                    12345678 <- only take up 8 spaces

长度是 11,但实际上它占用的NSString空间是 8。

在 Java 中,他们可以使用以下代码检查字符类型:

static boolean isMark(char ch)
{
    int type = Character.getType(ch);
    return type == Character.NON_SPACING_MARK ||
           type == Character.ENCLOSING_MARK ||
           type == Character.COMBINING_SPACING_MARK;
}

Objective-C 呢?

感谢bdash。

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

所以对于这个例子,newString 的长度是 3。这就是我要找的。谢谢人们。

4

1 回答 1

1

您可以使用[NSCharacterSet nonBaseCharacterSet]Unicode 标记类别中检索字符集。NSCharacterSet提供了测试给定字符是否是集合成员的NSString能力,并提供了在字符串中查找特定字符的能力,这些字符是(或不是)给定的成员NSCharacterSet

于 2013-03-27T08:08:48.490 回答