C# 从Google API C中检测字符串的语言#

C# 从Google API C中检测字符串的语言#,c#,C#,我正在尝试检测player.LastChat的书面文本是什么语言,我遇到了一些困难 以下是我的代码: String[] words = player.LastChat.Trim().Split(new Char[]{' ','\t',',','.',':','!','?',';','(',')',']','[','"'}); StringBuilder edited = new StringBuilder(); // Remove exception list words from line f

我正在尝试检测player.LastChat的书面文本是什么语言,我遇到了一些困难

以下是我的代码:

String[] words = player.LastChat.Trim().Split(new Char[]{' ','\t',',','.',':','!','?',';','(',')',']','[','"'});
StringBuilder edited = new StringBuilder();
// Remove exception list words from line
foreach (String w in words) {
    if (plugin.isInList(w, "good_words")) {
        continue;
    }
    edited.Append(w);
    edited.Append(" ");
}

// URL Encode edited string
String UnreservedChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.~";
StringBuilder Result = new StringBuilder();
String Input = edited.ToString();

for (int x = 0; x < Input.Length; ++x)
{
    if (UnreservedChars.IndexOf(Input[x]) != -1)
        Result.Append(Input[x]);
    else
        Result.Append("%").Append(String.Format("{0:X2}", (int)Input[x]));
}
String key = "API KEY";
// Test for badness
bool jsonresult = false;

try {
    WebClient client = new WebClient();
    String json = client.DownloadString("https://www.googleapis.com/language/translate/v2/detect?key=" + key + "&q=" + Result.ToString());
    jsonresult = json.Contains("en");
} catch (Exception e) {
    plugin.ConsoleWrite("Language check failed! Error: " + e);
}
if (!jsonresult) {
    return true;
}
plugin.ConsoleWrite("Language: " + jsonresult);
return jsonresult; // for Actions
非常感谢您的帮助,我不知道如何编写代码,这段代码是从另一个脚本借用的


注意。

要使方法按所述工作,您应该更改:

if (!jsonresult) {
    return true;
}
plugin.ConsoleWrite("Language: " + jsonresult);
return jsonresult;
致:

还有这条线

jsonresult = json.Contains("en");
正在检查json文本中是否出现
“en”
(可在json中的
“confidence”
中找到)。您应该做的是使用Json.net(或其他lib)解析Json,或者简单地这样做(但这是一个难看的攻击):


要使方法按所述工作,您应该更改:

if (!jsonresult) {
    return true;
}
plugin.ConsoleWrite("Language: " + jsonresult);
return jsonresult;
致:

还有这条线

jsonresult = json.Contains("en");
正在检查json文本中是否出现
“en”
(可在json中的
“confidence”
中找到)。您应该做的是使用Json.net(或其他lib)解析Json,或者简单地这样做(但这是一个难看的攻击):


你是用随机字符串还是用外语的实际句子来测试它?谷歌的回答基本上是这样的:“事实上,我不知道哪种语言可能是这种语言,所以我会默认为英语”(因为英语无论如何都是不可压缩的,我猜:-p)jsonString.Contains(“en”)不好,它总是会返回true,因为它还会在“confidence”中找到“en”,最好对其进行解析/反序列化并获取language@SJuan:我正在运行脚本的服务器中使用实际句子进行测试。:)@冈瑟34567:这就是我的想法,正如我所说,我不知道如何编码,我只是理解逻辑。:)你是用随机字符串还是用外语的实际句子来测试它?谷歌的回答基本上是这样的:“事实上,我不知道哪种语言可能是这种语言,所以我会默认为英语”(因为英语无论如何都是不可压缩的,我猜:-p)jsonString.Contains(“en”)不好,它总是会返回true,因为它还会在“confidence”中找到“en”,最好对其进行解析/反序列化并获取language@SJuan:我正在运行脚本的服务器中使用实际句子进行测试。:)@冈瑟34567:这就是我的想法,正如我所说,我不知道如何编码,我只是理解逻辑。:)非常感谢。真管用!我现在可以添加更多的语言,只有当它们不是已定义的语言时,才会返回true:)非常感谢。真管用!我现在可以添加更多的语言,只有当它们不是已定义的语言时,才会返回true:)
jsonresult = json.Contains("\"language\": \"en\",");