例如,有一个名为“input”的 NSString,它将用户在文本视图中键入的内容转换为 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]];
}];
所以可以看到“input”被做成了一个副本,现在变成了“input2”。被替换的输入是在另一个文本视图中出现的。像这样:
_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.
}
在里面我添加了上面的代码,但它什么也没做。我看到的最简单的方法是这样的,如果输入(原始)与 input2 不匹配,那么让它改变不匹配的颜色。