我正在使用Microsoft Translator(http://msdn.microsoft.com/en-us/library/ff512422.aspx)。
具体来说,TranslateArray()
方法基本上采用字符串数组进行翻译,结果是带有翻译文本的数组。
生成的翻译带有TranslateArrayResponse[]
类型。
我的代码看起来像这样(为了清晰起见缩短了)
string[] sourceTranslate = new string[3] {"My name is Peter", "Her name is Suzan", "We have fun"};
....
TranslateArrayResponse[] result = client.TranslateArray("", sourceTranslate, "en", "de", options);
使用client.TranslateArray()
方法的挑战是它只允许每个请求为10,000个字符,数字项最多为2000.我的sourceTranslate
(一个resx文件)很容易包含超过10,000个字符,所以为了解决这个问题,我正在分割符合这些界限的请求。
我的问题是如何将值result
复制到字符串[]或类似字符 - 我需要稍后使用result
(即将结果保存回新的resx文件)?
显然像result += ...
这样的东西不起作用。
答案 0 :(得分:1)
有多种方法可以做到这一点。
一个简单的方法是在循环遍历TranslateArrayResponse
值数组时逐步创建一个新字符串 - 根据docs,每个字符串都具有TranslatedText
属性类型string
:
StringBuilder sb = new StringBuilder();
foreach (var tar in result) {
sb.Append(tar.TranslatedText);
}
string resultString = sb.ToString();
另一个解决方案是使用LINQ Select
method从每个项目中提取翻译文本,然后使用string.Join
method连接字符串的结果枚举:
string resultString = string.Join("", result.Select(r => r.TranslatedText));