Проверьте, способен ли NSMakeRange принять диапазон или нет - PullRequest
0 голосов
/ 15 апреля 2011

В настоящее время я использую приведенный ниже код для получения подстроки

NSString *s1 = [stringName substringWithRange: NSMakeRange(0, 2)];

NSString *s2 = [stringName substringWithRange: NSMakeRange(2, 4)];

NSString *s3 = [stringName substringWithRange: NSMakeRange(6, [stringName length])];

Здесь показано, как проверить, допустим ли диапазон или нет, потому что я не могу проверить длину строки, поскольку она может отличаться навремя.Пожалуйста, помогите мне в этом вопросе ..

Ответы [ 2 ]

1 голос
/ 15 апреля 2011

Как сказано в документации на яблоко ..

substringWithRange:

Возвращает строковый объект, содержащий символы получателя, которые находятся в заданном диапазоне.

- (NSString *)substringWithRange:(NSRange)aRange

aRange

A range. The range must not exceed the bounds of the receiver.

Вам нужно проверять каждый раз, когда вы создаете NSMakeRange (), является ли Range, который вы указали в пределах длины вашей строки, ИЛИ ... не используя какое-то if and else условие

1 голос
/ 15 апреля 2011

Для s3 вы начинаете с позиции и запрашиваете ровно столько символов, сколько в строке.Но так как вы начинаете с позиции 6, вы просите 6 символов слишком много.Вам нужно сделать:

NSString *s3 = [stringName substringWithRange: NSMakeRange(6, [stringName length] - 6)];
...