0

我正在开发一种翻译器,它将采用英语文本(作为用户输入到 UITextView 中)并(按下按钮)用替代词替换特定的词。我将范围内的英语单词以及它们的替代词放在单独的数组(englishArray 和alternativeArray)中,并进行相应的索引。

我的挑战是找到一种算法,该算法允许我识别输入文本(UITextView)中的单词,忽略 <",.()> 等字符,在 englishArray 中查找单词(不区分大小写),在 AlternativeArray 中找到相应的单词并然后用那个词代替原来的——把它写回 UITextView。

非常感谢任何帮助。

注意。我创建了一个扩展 NSArray 功能的类别,该方法使用 indexOfCaseInsensitiveString 方法在执行 indexOfObject 类型查找时忽略大小写,如果有帮助的话。

托尼。

4

2 回答 2

0

我认为使用 NSScanner 最好将字符串解析为单独的单词,然后您可以将其传递给 indexOfCaseInsensitiveString 方法。scanCharactersFromSet:intoString: 使用一组你想忽略的所有字符,包括空格和换行符应该让你找到一个单词的开头,然后你可以使用 scanUpToCharactersFromSet:intoString: 使用相同的集合扫描到结尾这个单词。在每次扫描的开头和结尾使用 scanLocation 应该可以让您获得该单词的范围,因此如果您在数组中找到匹配项,您将知道在字符串中的哪个位置进行替换。

于 2012-04-23T03:14:26.530 回答
0

谢谢你的建议。它有一个例外。

我想捕获所有标点符号,以便我可以重新创建原始输入,但使用替换的单词。即使我的字符集中有一个“空格”,扫描仪也不会将空格放入“intoString”中。我在字符集中指定的其他字符,例如“(”和“;”)在“intoString”中表示。

Net 是,当我重新创建输入时,它是完美的,除了我让单个单词相互运行。

更新:我通过包括以下内容解决了这个问题:

[theScanner setCharactersToBeSkipped:nil];

再次感谢。

于 2012-04-24T05:25:57.353 回答