Как разбить строку на подстроки на iOS?

Я получил NSString с сервера. Теперь я хочу разбить его на подстроку, которая мне нужна. Как разбить строку?

Например:

substring1: чтение от второго символа до 5-го символа

substring2: прочитать 10 символов из 6-го символа.

вопрос задан 27.02.2009
Chilly Zhong
8799 репутация

3 ответов


  • 215 рейтинг

    Вы также можете разбить строку по подстроке, используя метод NString componentsSeparatedByString .

    Пример из документации:

    NSString *list = @"Norman, Stanley, Fletcher";
    NSArray *listItems = [list componentsSeparatedByString:@", "];
    
    ответ дан codelogic, с репутацией 51493, 27.02.2009
  • 38 рейтинг

    NSString имеет несколько методов для этого:

    [myString substringToIndex:index];
    [myString substringFromIndex:index];
    [myString substringWithRange:range];
    

    Проверьте документацию для NSString для получения дополнительной информации.

    ответ дан Joel Levin, с репутацией 2670, 27.02.2009
  • 1 рейтинг

    Я написал небольшой метод для разделения строк на указанное количество частей. Обратите внимание, что он поддерживает только один символ-разделитель. Но я думаю, что это эффективный способ разбить строку NSString.

    //split string into given number of parts
    -(NSArray*)splitString:(NSString*)string withDelimiter:(NSString*)delimiter inParts:(int)parts{
        NSMutableArray* array = [NSMutableArray array];
    
        NSUInteger len = [string length];
        unichar buffer[len+1];
    
        //put separator in buffer
        unichar separator[1];
        [delimiter getCharacters:separator range:NSMakeRange(0, 1)];
    
        [string getCharacters:buffer range:NSMakeRange(0, len)];
    
        int startPosition = 0;
        int length = 0;
        for(int i = 0; i < len; i++) {
    
            //if array is parts-1 and the character was found add it to array
            if (buffer[i]==separator[0] && array.count < parts-1) {
                if (length>0) {
                    [array addObject:[string substringWithRange:NSMakeRange(startPosition, length)]];
    
                }
    
                startPosition += length+1;
                length = 0;
    
                if (array.count >= parts-1) {
                    break;
                }
    
            }else{
                length++;
            }
    
        }
    
        //add the last part of the string to the array
        [array addObject:[string substringFromIndex:startPosition]];
    
        return array;
    }
    
    ответ дан ben, с репутацией 648, 13.12.2016