Как найти и заменить текст в файле с помощью Objective C? - PullRequest
2 голосов
/ 19 августа 2011

Я новичок в Xcode, и мне было интересно, может ли кто-нибудь помочь мне с этим.

Мне нужно создать приложение, способное открыть файл и заменить его содержимое.

например. (в коде псевдо)

Заменить ("String1", "String2", "~ / Desktop / Sample.txt")

Пожалуйста, дайте мне знать, если я не достаточно ясен.

Заранее спасибо.

Ответы [ 3 ]

6 голосов
/ 19 августа 2011

используйте метод stringByReplacingOccurrencesOfString:withString:, который найдет все вхождения одной строки NSS и заменит их, возвращая новую автоматически выпущенную строку NSString.

NSString *source = @"The rain in Spain";

NSString *copy = [source stringByReplacingOccurrencesOfString:@"ain"
                                                   withString:@"oof"];

NSLog(@"copy = %@", copy);
// prints "copy = The roof in Spoof"

Редактировать

чтобы установить содержимое файла в вашей строке (будьте осторожны, если ваш файл немного велик, это не удобно), замените вхождения, затем скопируйте в новый файл:

// Instantiate an NSString which describes the filesystem location of
// the file we will be reading.
NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Sample.txt"];

NSError *anError;

NSString *aString = [NSString stringWithContentsOfFile:filePath
                                              encoding:NSUTF8StringEncoding
                                                 error:&anError];

// If the file read was unsuccessful, display the error description.
// Otherwise, copy the string to your file.
if (!aString) {
    NSLog(@"%@", [anError localizedDescription]);
} else {
      //replace string1 occurences by string2

      NSString *replacedString = [aString stringByReplacingOccurrencesOfString:@"String1"
                                                   withString:@"String2"];


     //copy replacedString to sample.txt
      NSString * stringFilepath = @"ReplacedSample.txt";
    [replacedString writeToFile:stringFilepath atomically:YES encoding:NSWindowsCP1250StringEncoding error:error];
}
2 голосов
/ 19 августа 2011

Вы, вероятно, хотите это

А что касается вашего вопроса о том, как прочитать текст из файла в строку NSString:

NSError * error;
NSString * stringFromFile;
NSString * stringFilepath = @"loadfile.txt";
stringFromFile = [[NSString alloc] initWithContentsOfFile:stringFilepath
                                          encoding:NSWindowsCP1250StringEncoding
                                              error:&error];

И для записи в файл: (используя тот же NSString из загрузки: stringFromFile)

NSError * error;
NSString * stringFilepath = @"savefile.txt";
[stringFromFile writeToFile:stringFilepath atomically:YES encoding:NSWindowsCP1250StringEncoding error:error];

Обратите внимание, что в этом примере я использую кодировку для окон (это означает, что в конце каждой строки используются символы \ n \ r) Проверьте документацию для других типов кодирования.

(см. NSString документация)

1 голос
/ 19 августа 2011

Для Xcode 4 откройте файл, который вы хотите найти, затем нажмите «Правка»> «Найти»> «Найти и заменить» или сочетание клавиш Command + Option + f.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...