Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用不同语言分析字符串的高效快速方法_C#_Regex_String_List_Rest - Fatal编程技术网

C# 使用不同语言分析字符串的高效快速方法

C# 使用不同语言分析字符串的高效快速方法,c#,regex,string,list,rest,C#,Regex,String,List,Rest,我有一个类似的字符串(通过Google Transliterate REST调用生成,并翻译成2种语言): “这个世界是美丽的थिस वर्ल्ड इस बेऔतिफुल एंड থিস বর্ল্ড ইস বিয়াউতিফুল আন্দ 不可思议的神秘 अमज़िन्ग्ली म्य्स्तेरिऔस আমাজিন্গ্লি ম্য্স্তেরীয়ুস " 现在Google Transliterate REST cal

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

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

现在Google Transliterate REST call一次允许五个单词,所以我必须循环,将其添加到列表中,然后连接字符串。这就是为什么我们看到每个块(每种语言)都有5个单词。单词总数是7个单词,所以首先5个
这个世界是美丽的
)在休息之前就存在了2
不可思议的神秘
)之后

如何最有效地解析句子,从而得到如下结果:

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

既然句子的长度,以及它可以转换成的语言的数量都可以是动态的,那么可以使用每种语言的列表来工作,然后在以后进行连接吗

我使用了一种方法,每次翻译一个单词,效果很好,但速度太慢,因为它增加了对API的调用次数


有人能帮我高效(动态)地实现这样的场景吗?非常感谢!

每种语言一个列表是最好的选择。

如果您指的是不同语言的不同字符ASCII码,您可以在这里使用以下答案:


支付google translate的API,然后每次请求的长度限制将增加到5000个字符


还有,是的,正如丹尼尔所说,将文本按语言分组是必要的

我已经尝试了一个解决方案,如果我误解了你的问题,请纠正我

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

谢谢你的消息。我明白这一点,我也这么想,但你能帮我写逻辑吗?谢谢。@DevDreamer:这是你作为开发人员的工作:-)此外,我对你的应用程序、现有结构等一无所知。谢谢你的消息。我想我最终会得到一个无效的逻辑,这就是寻求帮助的原因。而且,任务是将混合语言句子转换为正确的集群句子。我会尝试尝试。谢谢。我终于实现了。但是,伙计,这是一个多么复杂的练习啊布莱恩:那是真的。谢谢你鼓励我自己做。谢谢。谢谢你的留言,但我用的是“音译”“API。谢谢您的消息,但解决方案是使用JavaScript。当我使用C#时,它们都使用PCRE,我称之为regex引擎。谢谢。这可能是第一步,但我想要的是一个语句列表,[0]是英语,[1]是印地语,[2]是孟加拉语。通过你的方法,我可以找回英语,但印地语和孟加拉语保持原样。谢谢你的帮助。你如何识别它是印地语还是孟加拉语?从计算机的角度来看,我认为这与识别印地语或孟加拉语无关,更取决于我得到结果的模式。并在此基础上对句子进行分析。谢谢。我得把我的句子改一下:)。我们知道它是英语、印地语等,但我想知道如何让计算机理解这是不同的语言?这不是必需的,有一个模式,我们需要抓住放在特定位置的单词。计算机不必知道它是孟加拉语还是印地语。