使用不同语言解析字符串的高效快捷方法

时间:2012-08-31 07:34:58

标签: c# regex string list rest

我有一个类似的字符串(通过Google Transliterate REST调用生成,并音译为 2 语言):

  

“这个世界是美丽的,थिसवर्ल्डइ्बेऔतिफुलएंड   থিসসর্ল্ডডইসিয়াউতিফুলফুল্দ令人惊讶的神秘   अमज़िन्ग्लीम्य्स्तेरिऔसআমাজিন্গ্লিম্য্স্তেরীয়ুস“

现在Google Transliterate REST调用一次允许五个字,所以我必须循环,将其添加到列表,然后连接字符串。这就是为什么我们看到每个CHUNK(每种语言)都是 5 字。单词总数 7 单词,因此首先 5 This world is beautiful and)位于休息之前 2 amazingly mysterious )稍后。

如何最有效地解析句子,以便得到类似的内容:

  

这个世界是美丽的,令人惊讶的神秘थिसवर्ल्डइइबअननननननननननननन्््থথথথথথথথথথথথথথথথথথথথথথথীয়ুসীয়ুসীয়ুসীয়ুসীয়ুসীয়ুস

由于句子的长度,以及可以转换成语言的数字可以是动态的,可以使用每种语言的列表都可以工作< / em>,然后再串联?

我使用了一种方法,我将每个单词音译,一次一个,它运行良好,但速度太慢,因为它增加了对API的调用次数。

有人可以帮助我实现这种情景的有效(和动态)吗?谢谢你!

4 个答案:

答案 0 :(得分:1)

每种语言都有一个列表可供选择。

答案 1 :(得分:0)

如果你的意思是不同语言的不同字符ASCII代码,你可以在这里使用这个答案:

Regular expression Spanish and Arabic words

答案 2 :(得分:0)

支付谷歌翻译的API,然后每个请求的长度限制最多为5,000个字符https://developers.google.com/translate/v2/faq

同样,是的,正如丹尼尔所说 - 按语言对文本进行分组是必要的

答案 3 :(得分:0)

我尝试了一项工作,如果我误解了你的问题,请纠正我

string statement = "This world is beautiful and थिस वर्ल्ड इस बेऔतिफुल एंड থিস বর্ল্ড ইস বিয়াউতিফুল আন্দ amazingly mysterious अमज़िन्ग्ली म्य्स्तेरिऔस আমাজিন্গ্লি ম্য্স্তেরীয়ুস ";
            string otherLangStmt = statement;

            MatchCollection matchCollection =   Regex.Matches(statement, "([a-zA-Z]+)");
            string result = "";
            foreach (Match match in matchCollection)
            {
                if (match.Groups.Count > 0)
                {
                    result += match.Groups[0].Value + " ";
                    otherLangStmt = otherLangStmt.Replace(match.Groups[0].Value, string.Empty);
                }                
            }
            otherLangStmt = Regex.Replace(otherLangStmt.Trim(), "[\\s]", " ");

            Console.WriteLine(result);
            Console.WriteLine(otherLangStmt);