Проверьте, завершает ли NSString символ пробела или символ новой строки?

Как проверить, является ли последний символ символа NSString символом пробела или символа новой строки.

Я мог бы сделать [[NSCharacter whitespaceAndNewlineCharacterSet] characterIsMember:lastChar]. Но как я могу получить последний символ NSString?

Или, должен ли я использовать - [NSString rangeOfCharacterFromSet:options:] с обратным поиском?

Ответ 1

Ты на правильном пути. Ниже показано, как вы можете получить последний символ в строке; вы можете проверить, является ли он членом whitespaceAndNewlineCharacterSet, как вы предложили.

unichar last = [myString characterAtIndex:[myString length] - 1];
if ([[NSCharacterSet whitespaceAndNewlineCharacterSet] characterIsMember:last]) {
  // ...
}

Ответ 2

Возможно, вы можете использовать length для объекта NSString, чтобы получить его длину, а затем использовать:

- (unichar)characterAtIndex:(NSUInteger)index

с index как length - 1. Теперь у вас есть последний символ, который можно сравнить с [NSCharacter whitespaceAndNewlineCharacterSet].

Ответ 3

@implementation NSString (Additions)

- (BOOL)endsInWhitespaceOrNewlineCharacter {
    NSUInteger stringLength = [self length];
    if (stringLength == 0) {
        return NO;
    }
    unichar lastChar = [self characterAtIndex:stringLength-1];
    return [[NSCharacterSet whitespaceAndNewlineCharacterSet] characterIsMember:lastChar];
}

@end