将TranslateArrayResponse的类型转换为string []

时间:2013-11-29 20:43:23

标签: c# arrays string microsoft-translator

我正在使用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 += ...这样的东西不起作用。

1 个答案:

答案 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));