0

ユーザーから文またはテキストの段落の文字列を受信して​​います。各文字列をチェックして、特定の単語が存在するかどうかを確認する必要があります。存在する場合は、見つかった単語に関連付けられた特定の単語に置き換える必要があります。

おそらく 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 単語を検索し、見つかった場合は指定された単語に置き換えて停止します。

すごい=>バカ

なぜなら => りんご

猫→犬

「これはテキストの文字列です。これは素晴らしいテキストの文字列です.. foo でいっぱいだからです。」

に変わるだろう

「これはテキストの文字列であり、愚かなテキストの文字列です.. foo でいっぱいだからです。」

最初の単語が見つかったら停止する必要があります。私は間違った方向に向かっていますか、それともこれを達成するためのより良い方法はありますか? おそらくNSScannerで?

4

2 に答える 2

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;
于 2014-03-18T11:54:33.797 に答える
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);
}
于 2012-09-28T05:56:39.367 に答える