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です。これが私が探しているものです。人々に感謝します。