2012-04-23 56 views
0

我正在研究將英文文本(作爲用戶輸入到UITextView中)和(用按鈕按下)替換特定單詞的翻譯器。我在英文單詞範圍內加上了英語單詞,並在單獨的數組(英語數組和替代數組)中選擇了他們的替代方案,並相應地編制索引。用戶輸入文本翻譯

我的挑戰是找到一種算法,可以讓我在輸入文本(一個UITextView)忽略的人物,如<」。()>確定一個字,查找在englishArray(不區分大小寫)這個詞,找到對應的字alternativeArray,然後用這個詞來代替原來的 - 。寫這回的UITextView

任何幫助,不勝感激

注:我創建了一個帶有indexOfCaseInsensitiveString方法擴展的NSArray功能的一類,在執行indexOfObject類型查找時忽略大小寫(如果有幫助)。

Tony。

回答

0

我認爲使用NSScanner最好將字符串解析爲單獨的單詞,然後您可以將它傳遞給indexOfCaseInsensitiveString方法。 scanCharactersFromSet:intoString:使用一組所有你想忽略的字符,包括空格和換行符應該讓你開始一個單詞,然後你可以使用scanUpToCharactersFromSet:intoString:使用同一個集合掃描到末尾這個單詞。在每次掃描的開始和結束處使用scanLocation應該允許您獲取該單詞的範圍,因此如果您在數組中找到匹配項,就會知道字符串中的哪個位置進行替換。

+0

感謝rdelmar這正是我一直在尋找和解決了我的挑戰非常感激... – Tony 2012-04-29 15:49:57

0

感謝您的建議。它只有一個例外。

我想要捕捉所有標點符號,以便我可以重新創建原始輸入,但使用替換字詞。即使我的字符集中有一個「空格」,掃描器並沒有將空格放入'intoString'中。我在字符集中指定的其他字符,例如'('和';'在'intoString'中表示。

網絡是當我重新創建輸入時,它是完美的,除了我獲得單個單詞。

更新:我固定的問題,通過包括:。再次

[theScanner setCharactersToBeSkipped:nil]; 

感謝