【问题标题】:Preserve the newline character within two NSStrings在两个 NSString 中保留换行符
【发布时间】:2012-04-22 13:43:16
【问题描述】:

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

我的问题是:第一个字符串的格式很好,换行符在翻译过程中变松了。

识别文本: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 包装器。

【问题讨论】:

  • 您的代码 sn-ps 似乎彼此无关。例如,只有第一个引用了myWords 变量。只有第二个引用了lb。如果你真的处理-componentsSeparatedByCharactersInSet:返回的数组来转换每个元素,你可以把转换后的元素组成一个数组,然后用-[NSArray componentsJoinedByString:]将它们重新组合成一个字符串。
  • 你是对的,编辑了问题。如果我做错了什么,请告诉我。
  • 那么,你用换行符分隔文本,然后用换行符加入文本?为什么?为什么不直接把原文传给译者呢?

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


【解决方案1】:

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

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

NSMutableString *mString = [txtView.text mutableCopy];

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-27
    • 2013-11-10
    • 2015-08-16
    • 2012-11-24
    • 1970-01-01
    • 2019-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多