Например, существует NSString с именем input, который преобразует то, что пользователь вводит в текстовое представление, в NSString.
NSString *input = inputTextField.text;
Таким образом, «ввод» зависит от того, что вводит пользователь. Теперь следующий код используется для изменения слова, которое вводит пользователь, на другое слово. Это происходит только после нажатия кнопки «Конвертировать».
input = [input stringByReplacingOccurrencesOfString:@"(?wi)\\bHello!\\b" withString:@"greetings!" options:NSRegularExpressionSearch range:NSMakeRange(0, [input length])];
Существует более 500 слов, которые будут автоматически заменены в зависимости от того, что вводит пользователь. После того, как он пройдет все сканирование, это код в конце. Это делает правильную автоматическую капитализацию.
NSMutableString *input2 = [input mutableCopy];
NSString *pattern = @"(^|\\.|\\?|\\!|\\.\"|\\!\"|\\?\")\\s*(\\p{Letter})";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:NULL];
[regex enumerateMatchesInString:input options:0 range:NSMakeRange(0, [input length]) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
NSRange r = [result rangeAtIndex:2];
[input2 replaceCharactersInRange:r withString:[[input substringWithRange:r] uppercaseString]];
}];
Итак, вы можете видеть, что «ввод» превращается в копию и теперь становится «вход2». Замененный ввод — это то, что выходит в другом текстовом представлении. как это:
_outputTextField.text = input2;
И это слова прекрасного. Если я напишу "Привет! Как дела?" это превратится в «Приветствую! Как дела?» Моя проблема в том, что в представлении выходного текста я хочу, чтобы любое слово, измененное по сравнению с ОРИГИНАЛЬНЫМ письмом, стало красным, чтобы пользователь знал, что изменилось.
Я пробовал это, но это ничего не делает.
NSMutableAttributedString *mutable = [[NSMutableAttributedString alloc] initWithString:input2];
[mutable addAttribute: NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, [input2 length])];
Другой подход, который я пробовал, заключается в добавлении:
if (input != input2) {
//Above code here.
}
и внутри я добавил приведенный выше код, но он ничего не делает. Самый простой подход, который я вижу, выглядит примерно так: если ввод (оригинал) не соответствует вводу2, заставьте его изменить цвет, который не соответствует.
NSAttributedString
и использовать ее вместо непосредственного @Greetings!? - person user1118321   schedule 22.08.2014