Проверьте, может ли NSMakeRange принимать диапазон или нет

#iphone #nsrange

#iPhone #nsrange

Вопрос:

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

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

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

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

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

Ответ №1:

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

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

Ответ №2:

Как говорится в документации Apple..

substringWithRange:

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

 - (NSString *)substringWithRange:(NSRange)aRange
  

aRange

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

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