保留两个NSStrings中的换行符

时间:2012-04-22 13:43:16

标签: objective-c ios nsstring uitextview bing-api

在我的应用程序中,我翻译TextView的内容并将其呈现给用户。

我的问题是:第一个字符串很好地格式化了Newline字符,在翻译过程中松散了。

认可文字:Picture 1 翻译文本:Picture 2

我的问题是:如何以相同的方式在第一个NSString中的相同位置添加相同数量的换行符,以使其看起来像第一个字符串?

翻译:

[[MSBingTranslator sharedTranslator] initWithDelegate:self andTranslateText:txtView.text fromLan:detectedLanguage toLan:@"de"];

- (void) MSBingTranslator:(MSBingTranslator *)cls translatedText:(NSString *) text {
    txtView.text = text;
}

- (void) MSBingTranslator:(MSBingTranslator *)cls detectedLanguage:(NSString *)lan {
    detectedLanguage = lan;
}

- (void) MSBingTranslator:(MSBingTranslator *)cls failedWithError:(NSString *) error {
}

我正在使用https://github.com/moeseth/Bing-Translator进行翻译,这是围绕微软Bing翻译的客观包装。

1 个答案:

答案 0 :(得分:2)

我认为你不能真正做到这一点,主要是因为当你进行翻译时,你会经常得到比你开始时更多的单词。确定哪些单词/组与前/后字符串中的哪些单词匹配将非常困难(除非您一次翻译一个单词并且不会翻译相同的单词)。如果不是这样的话,你可以在翻译的字符串上使用componentsSeparatedByCharactersInSet,然后通过旧数组查找空字符串,以确定在新数组中添加新行的位置。

顺便说一句,不是创建数组然后将其写入可变字符串,您可以使用:

NSMutableString *mString = [txtView.text mutableCopy];

(除非您将数组用于其他内容)