【发布时间】:2014-06-13 09:24:18
【问题描述】:
所以我有一个文本字段,用户可以在其中输入任何内容。我使用以下代码为输入分配一个 NSString 值:
NSString *input = _inputTextField.text;
如果用户在输入的任何地方都有“smart”这个词,那么它将用“clever”替换它。同样,如果他们“更聪明”,它将用“更聪明”代替。我有以下代码来实现这一点:
input = [input stringByReplacingOccurrencesOfString:@"smart" withString:@"clever"];
input = [input stringByReplacingOccurrencesOfString:@"smarter" withString:@"cleverer"];
现在这很完美,但是我在运行应用程序时遇到了问题。如果用户有任何包含“smart”的词,例如“smartweed”,那么它将变成“cleverweed”,甚至不是一个词。为了绕过这个,我添加了以下代码:
input = [input stringByReplacingOccurrencesOfString:@"cleverweed" withString:@"smartweed"];
现在,我知道我不必对存在的每个包含“智能”的单词都这样做,因此我将代码更改为:
input = [input stringByReplacingOccurrencesOfString:@" smart " withString:@" clever "];
嘿,解决了。但是后来我遇到了一个问题......如果“smart”这个词是一个句子的开头,或者是一个句子的最后一个,它不会解决它!我可以通过添加以下内容来修复它:
input = [input stringByReplacingOccurrencesOfString:@"Smart " withString:@"Clever "];
input = [input stringByReplacingOccurrencesOfString:@" smart." withString:@" clever."];
以此类推,无论句子的结尾是什么。
现在,我的官方问题是,有没有一种方法可以让代码将“智能”替换为“聪明”而不改变出现在其他单词中的“智能”一词?我看过 NSRange,但我很困惑如何在这里正确使用它,因为它可能取决于用户输入的任何内容。
另外,我试过搜索这个,但找不到。
【问题讨论】:
标签: objective-c string text replace nsstring