我正在收到用户的句子或文本段落的字符串。我需要检查每个字符串,看看是否存在特定的单词。如果确实如此,则需要将其替换为与找到的单词绑定的特定单词。
我想也许可以使用NSDictionary并将键作为要搜索的单词,并将对象作为要替换的单词。迭代字典。 - 我认为它很接近但需要一点指导。
NSString *inputText = userInput;
NSString *finalOutput;
NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:
@"awesome", @"dumb",
@"because", @"apple", nil];
[dic enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
finalOutput = [inputText stringByReplacingOccurrencesOfString:key withString:obj];
}];
所以基本上搜索X字的文字X字,如果找到一个然后用指定的字替换它并停止。
awesome =>哑
因为=>苹果
cat =>狗
“这是一个文本字符串,它是一个 awesome 文本字符串..因为它充满了foo。”
会变成
“这是一个文本字符串,它是一个 dumb 文本字符串..因为它充满了foo。”
一旦找到第一个字就应该停止。 我是朝着错误的方向前进还是有更好的方法来实现这个目标?也许使用NSScanner?
答案 0 :(得分:1)
我知道这个帖子已经老了但是请尝试通过字符串枚举并替换单词。
NSString *fullText =@"Some text that needs to have words replaced!"
NSDictionary *replacementDict = @{@"replaced" : @"stuff"}
__block NSString *newStr = [NSString stringWithString:fullText];
__block BOOL replacementDone = YES;
while (replacementDone) {
replacementDone = NO;
newStr = [NSString stringWithString:newStr];
NSRange wordRange = NSMakeRange(0, newStr.length);
[newStr enumerateSubstringsInRange:wordRange
options: NSStringEnumerationByWords
usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop){
NSString *lowWord = [substring lowercaseString];
if ([replacementDict objectForKey:substring])
{
*stop = YES;
newStr = [newStr stringByReplacingCharactersInRange:substringRange withString:[replacementDict objectForKey:substring]];
replacementDone = YES;
}
}];
}
return newStr;
答案 1 :(得分:0)
选中此项以替换字符串中的第一个单词(替换字符串):
NSString *str3 = @"This is a string of text, and it is an awesome string of text.. because it is full of foo awesome";
NSLog(@"%@",str3);
NSString *outputString;
NSRange range = [str3 rangeOfString:@"awesome"]; //Find string
if(range.location != NSNotFound)
{
outputString = [str3 stringByReplacingCharactersInRange:range withString:@"dumb"];
OR use this
//string exists
//copy upto found string in new string
outputString = [str3 substringToIndex:range.location];
//now add your replace string plus remaining string
outputString = [outputString stringByAppendingString:[NSString stringWithFormat:@"dumb%@",[str3 substringFromIndex:range.location+range.length]]];
NSLog(@"%@",outputString);
}