Как проверить, не является ли символ в моем NSString
символом без пробела?Поиск символов без пробелов в Objective-C
Например:
NSString *string3 = @"เบียร์เหล้า";
// 12345678 <- only take up 8 spaces
Длина NSString
составляет 11, но на самом деле пространство, которое она занимает в 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:@""];
Таким образом, для этого примера длина новой строки равна 3. Это то, что я ищу. Спасибо людям.
Ваша строка имеет только 1 пробел. поэтому длина равна 11 после ее удаления. –
Думаю, я изменю вопрос, чтобы сделать его более ясным. – user774150
, что из-за разных unicode имеет разный вес, например, вы используете малайский или какой-либо другой язык, а на английском языке есть еще один юникод. вот почему –