Как получить «реальную длину» строки NSString - PullRequest
0 голосов
/ 24 марта 2011

Скажите, что я получил строку вроде:

NSString * str = @ "abc 一 二三";

, который содержит английский и китайский, если я использую [str length], я получил результат 6. Результат, который я хочу получить: 1 + 1 + 1 + 2 + 2 + 2 = 9, один иероглиф равно 2 английским буквам.

Надеюсь, кто-нибудь может мне помочь, спасибо ^ _ ^

Ответы [ 2 ]

0 голосов
/ 28 августа 2015

Может быть, вы можете преобразовать NSString в NSData и использовать длину NSData.

0 голосов
/ 01 апреля 2011

Ну, это было бы утомительно, но вы могли бы создать свой собственный метод String Length. Метод с оператором switch, который проверяет символы по отдельности и соответственно присваивает целочисленные значения, а затем возвращает итоговое значение. Например:

- (NSInteger)specialStringLength:(NSString *)theString {
     int realLength=0;
     for(int x=0;x<[theString length];x++)
     {
          char thisOne = [theString characterAtIndex:x];
          switch(thisOne) {
               case 'a':
                    realLength++;
                    break;
               // and so on...
               case '三':
                    realLength+=2;
                    break;
               // and so on...
          }
     }
     return realLength;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...