Манипуляция строк в Objective-C
Откажитесь от того, как извлекать и записывать переменные в Objective-C, теперь пришло время узнать, как сделать с ними что-то более полезное! Прямо сейчас, я в первую очередь пытаюсь понять, как работает строковая манипуляция. В частности, я ищу следующие функции:
- конкатенация
- Поиск длины строки (особенно многобайтных /UTF -8 строк, я много работаю с восточноазиатскими языками)
- Вытягивание только части строки (например, "foobar" из "abcfoobarxyz" )
- Поиск в строке (см. пример выше)
- Изменчивый случай (верхний, нижний, заголовок, если это просто сделать)
- Строки Exploding/Imploding (например, создание и получение информации из списков, разделенных запятыми)
- Найти/заменить внутри строк
- Любые другие полезные функции строки, которые могут быть доступны
Ответы
Ответ 1
Примеры:
Конкатенация:
- (NSString*) concatenateString:(NSString*)stringA withString:(NSString*)stringB
{
NSString *finalString = [NSString stringWithFormat:@"%@%@", stringA,
stringB];
return finalString;
}
// The advantage of this method is that it is simple to put text between the
// two strings (e.g. Put a "-" replace %@%@ by %@ - %@ and that will put a
// dash between stringA and stringB
Длина строки:
- (int) stringLength:(NSString*)string
{
return [string length];
//Not sure for east-asian languages, but works fine usually
}
Удалить текст из строки:
- (NSString*)remove:(NSString*)textToRemove fromString:(NSString*)input
{
return [input stringByReplacingOccurrencesOfString:textToRemove
withString:@""];
}
Верхний регистр/Нижний регистр/Секция:
- (NSString*)uppercase:(NSString*)stringToUppercase
{
return [stringToUppercase uppercaseString];
}
- (NSString*)lowercase:(NSString*)stringToLowercase
{
return [stringToLowercase lowercaseString];
}
- (NSString*)titlecase:(NSString*)stringToTitleCase
{
return [stringToTitleCase capitalizedString];
}
Найти/Заменить
- (NSString*)findInString:(NSString*)string
replaceWithString:(NSString*)stringToReplaceWith
{
return [input stringByReplacingOccurrencesOfString:string
withString:stringToReplaceWith];
}
Надеюсь, это поможет!
PS: Не забудьте проверить документацию, а Google - ваш друг. Удачи.
Ответ 2
Существует Руководство по программированию строк для Cocoa, оглавление которого находится ужасно близко к вашему списку вопросов.
Кроме того, вы можете посмотреть документацию NSString (& NSMutableString) и NSScanner.
Ответ 3
В Xcode нажмите CMD-SHIFT-D и найдите NSString.h, NSMutableString и/или NSScanner
Откройте эти файлы и посмотрите все, что вы можете сделать с помощью NSStrings. Это должно сказать вам, какие функции существуют.
Кстати, это должно стать для вас второй натурой, так как вы будете использовать это для выяснения функций и/или делегатов.
Ответ 4
Вот вам подпрограмма "заголовок дела":
- (NSString *) stringToTitleCase: (NSString *) inString
{
NSString *firstLetter = [inString substringWithRange: NSMakeRange(0, 1)];
NSString *theRest = [inString substringWithRange: NSMakeRange(1, [inString length]-1)];
return [NSString stringWithFormat: @"%@%@", [firstLetter uppercaseString], theRest];
}
Ответ 5
Все написано очень четко в документации.
Ответ 6
- (NSString *) stringToTitleCase: (NSString *) inString
{
NSString *firstLetter = [inString substringWithRange: NSMakeRange(0, 1)];
NSString *theRest = [inString substringWithRange: NSMakeRange(1, [inString length]-1)];
return [NSString stringWithFormat: @"%@%@", [firstLetter uppercaseString], theRest];
}