如何检查我的字符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。这就是我要找的。谢谢人们。