Как отделить строку NSString в файле на основе определенных символов? - PullRequest
0 голосов
/ 31 марта 2011

Мне нужно разделить файлы, которые открывает мое приложение, на основе символа "~".Например, если я сохраняю текстовый файл со строкой «test ~ test2», мне нужно разделить строку на две строки NSStrings: (@ "test" и @ "test2").Как я могу это сделать?

Я бы предпочел загрузить строку в NSTextView и посмотреть на отдельные буквы, например:

for (int integerA = 0; integerA < [textViewString length]; integerA ++) {
    [textViewString selectRange(integerA, integerA)];
    if ([textViewString selectedRange] == @"~") {
        //then split the string
    }
}

Единственная проблема заключается в том, что нетметод "selectRange" или "selectedRange".Другие способы вполне хороши, но я хотел бы иметь возможность сделать так, чтобы они проходили один за другим и добавляли их в правильную строку, потому что мне может понадобиться разбить строку в текстовом файле на целых пятнадцать строк.

Любая помощь очень ценится!

РЕДАКТИРОВАТЬ: После решения этой проблемы появилась новая проблема: мне нужно сохранить 12 значений, но NSArray говорит следующее.

HIToolbox: игнорирование исключения '* - [NSCFArray objectAtIndex:]: index (7) за пределами (7)', которое возникло внутри отправки события Carbon

Что я могу сделать, чтобы это исправить?

Ответы [ 2 ]

2 голосов
/ 31 марта 2011
NSArray *strings = [fileContentsAsString componentsSeparatedByString:@"~"];

1 голос
/ 31 марта 2011

Wevah уже ответил на ваш вопрос, но я подумал, что хотел бы указать на пару вещей для вас:

  1. Метод извлечения подстроки называется substringWithRange:, в качестве аргумента используется структура NSRange.Членами NSRange структуры являются location и length.Если вы хотите извлечь подстроку, инициализируйте структуру NSRange и передайте ее substringWithRange: для извлечения этих символов:

    NSRange myRange = { .location = integerA, .length = 1 };
    NSString *mySubstr = [textViewString substringWithRange:myRange];
    

    Не используйте этот метод просто для извлечения символов по одномуоднако для этого доступны другие методы.

  2. В Objective-C, == не может использоваться для проверки, равны ли две строки, вместо этого вы должны использовать isEqualToString: метод, например:

    if ([mySubstr isEqualToString:@"~"])
    {
        // ...
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...