2012-04-22 69 views
0

在我的应用程序中,我翻译TextView的内容并将其呈现给用户。在两个NSStrings中保留换行符

我的问题是:第一个字符串很好地格式化为换行期间松散的换行符。

识别文本: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的翻译,围绕微软的必应翻译一个Objective-C的包装。

+0

你的代码片段似乎彼此无关。例如,只有第一个引用“myWords”变量。只有第二个提到'lb'。如果你真的处理了由'-componentsSeparatedByCharactersInSet:'返回的数组来转换每个元素,你可以获得一个转换后的元素数组,并用' - [NSArray componentsJoinedByString:]'将它们重新组合成一个字符串。 – 2012-04-22 14:27:00

+0

你是对的,编辑了这个问题。如果我做错了什么,请让我知道。 – mstottrop 2012-04-22 15:25:01

+0

那么,你用换行符分隔文本,然后用新行加入文本?为什么?你为什么不把原文传给译者? – 2012-04-22 15:38:03

回答

2

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

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

NSMutableString *mString = [txtView.text mutableCopy]; 

(除非您使用的是阵列其他东西)

+0

我找到了答案,会相应地更新我的答案! – mstottrop 2012-04-22 18:06:43