У меня была похожая проблема, ответы здесь помогли мне найти решение.У меня был массив, в котором был список меток, которые я хотел отобразить в UITableView, по одной метке на строку.
Моя проблема заключалась в том, что я разобрал эти метки из XML, возвращенного действием SOAP, и я понятия не имелповерх формата строк.
Сначала я реализовал ответ webstersx в метод.Это было замечательно, но некоторые из этих ярлыков начинались с заглавной буквы, а некоторые - в случае верблюда (например, в некоторых строках, где exampleLabel
, а в других - ExampleLabel
. Таким образом, это означало, что у тех, кто начинался с заглавной буквы, было вставлено пространство передstring.
Я преодолел это, обрезав пробелы в начале и конце строки, используя stringByTrimmingCharactersInSet
.
для NSString. Следующей проблемой были любые используемые сокращения, такие как "ID" или "PNRСтатус ", где отображаются как" ID "и" Статус PNR "как заглавные буквы, где, и совершенно справедливо, поднято и вставлен пробел перед ним.
Я преодолел эту проблему, применяя регулярное выражение, подобноена ответ emdog4 в мой новый метод.
Вот мое законченное решение:
- (NSString *)formatLabel:(NSString *)label
{
NSMutableString *str2 = [NSMutableString string];
for (NSInteger i=0; i<label.length; i++){
NSString *ch = [label substringWithRange:NSMakeRange(i, 1)];
if ([ch rangeOfCharacterFromSet:[NSCharacterSet uppercaseLetterCharacterSet]].location != NSNotFound) {
[str2 appendString:@" "];
}
[str2 appendString:ch];
}
NSString * formattedString = [str2 stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]].capitalizedString;
formattedString = [formattedString stringByReplacingOccurrencesOfString:@"([A-Z]) (?![A-Z][a-z])" withString:@"$1" options:NSRegularExpressionSearch range:NSMakeRange(0, formattedString.length)];
return formattedString;
}
Затем я просто вызываю что-то вроде этого, например, которое вернет мою красиво отформатированную строку:
NSString * formattedLabel = [self formatLabel:@"PNRStatus"];
NSLog(@"Formatted Label: %@", formattedLabel);
Будет выводить:
2013-10-10 10: 44: 39.888 Тестовый проект [28296: a0b] Отформатированная метка: PNR Status