-3

我想验证文本框以检查输入的值是否为英文,这是我的验证类

using System;
using System.ComponentModel;
using System.Text.RegularExpressions;
using Vytru.Base;

namespace Vytru.Platform.Bridge.Configuration.Manager
{
     class MapDevice : IDataErrorInfo
     {
        public string UserName { get; set; }
        public string AgentName { get; set; }
        public string SipURI { get; set; }
        public string Password { get; set; }
        public string FQDN { get; set; }
        public string Domain { get; set; }
        public SipServerTransportType _TransportType { get; set; }
        public PeerType _PeerType { get; set; }
        public string PeerURI { get; set; }


        #region Implementation of IDataErrorInfo

        public string this[string columnName]
        {
            get
            {
                string result = null;
                if (columnName.Equals("UserName"))
                {
                    // check for null or empty values 
                    if (String.IsNullOrEmpty(UserName))
                    {
                         result = "User Name cannot be null or empty";
                    }
                    else if (UserName.Length > 50)
                    {
                        result = "More than 50 characters";
                    }
                    else if (UserName.Length < 3)
                    {
                        result = "less than 3 characters";
                    }
                    else if (!Regex.IsMatch(UserName, @"\w+"))
                    {
                         result = "Entered User Name format is not valid ...only A-Z 0-9";
                    }

                }

                else if (columnName.Equals("AgentName"))
                {
                    // check for null or empty values 
                    if (String.IsNullOrEmpty(AgentName))
                    {
                         result = "Agent Name cannot be null or empty";
                    }
                    else if (AgentName.Length < 3)
                    {
                         result = "less than 3 characters";
                    }

                    else if (AgentName.Length > 50)
                    {
                         result = "More than 50 characters";
                    }

                    else if (!Regex.IsMatch(AgentName, @"\w+"))
                    {
                         result = "Entered AgentName format is not valid ... only A-Z 0-9";
                    }

                }

                else if (columnName.Equals("SipURI"))
                {
                    // check for null or empty values 
                    if (String.IsNullOrEmpty(SipURI))
                    {
                         result = "Sip URI cannot be null or empty";
                    }

                    else if (SipURI.Length < 3)
                    {
                         result = "less than 3 characters";
                    }

                    else if (SipURI.Length > 50)
                    {
                         result = "More than 50 characters";
                    }

                    else if (!Regex.IsMatch(SipURI, @"(s|S)+(i|I)+(p|P)+(:)+\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"))
                    {
                         result = "Entered SipURI format is not valid ... ";
                    }


                }

                if (columnName.Equals("Password"))
                {
                     // check for null or empty values 
                     if (String.IsNullOrEmpty(Password))
                     {
                          result = "Password cannot be null or empty";
                     }
                     else if (Password.Length > 50)
                     {
                          result = "More than 50 characters";
                     }
                     else if (Password.Length < 3)
                     {
                          result = "Less than 3 characters";
                     }

                     else if (!Regex.IsMatch(Password, @"\w+"))
                     {
                          result = "Entered Password is not valid ... only A-Z 0-9 ";
                     }


                }

                else if (columnName.Equals("FQDN"))
                {
                     // check for null or empty values 
                     if (String.IsNullOrEmpty(FQDN))
                     {
                          result = "FQDN cannot be null or empty";
                     }
                     else if (FQDN.Length > 50)
                     {
                          result = "More than 50 characters";
                     }
                     else if (FQDN.Length < 3)
                     {
                          result = "Less than 3 characters";
                     }
                     else if (!Regex.IsMatch(FQDN, @"\w+"))
                     {
                          result = "Entered FQDN format is not valid ... only A-Z 0-9";
                     }

                }

                else if (columnName.Equals("Domain"))
                {
                     // check for null or empty values 
                     if (String.IsNullOrEmpty(Domain))
                     {
                          result = "Domain cannot be null or empty";
                     }

                     else if (Domain.Length > 50)
                     {
                          result = "More than 50 characters";
                     }
                     else if (Domain.Length < 2)
                     {
                          result = "Less than 3 characters";
                     }

                     else if (!Regex.IsMatch(Domain, @"\w+"))
                     {
                          result = "Entered Domain format is not valid ...  ";
                     }


                }

                else if (columnName.Equals("PeerURI"))
                {
                     // check for null or empty values 
                     if (String.IsNullOrEmpty(PeerURI))
                     {
                          result = "PeerURI cannot be null or empty";
                     }

                     else if (PeerURI.Length > 50)
                     {
                          result = "More than 50 characters";
                     }
                     else if (PeerURI.Length < 3)
                     {
                          result = "Less than 3 characters";
                     }

                     else if (!Regex.IsMatch(PeerURI, @"\w+"))
                     {
                          result = "Entered PeerURI format is not valid ...";
                     }

                }

                return result;

            }
        }

        public string Error
        {
            get { throw new NotImplementedException(); }
        }

        #endregion



     }
}
4

4 回答 4

2

我认为验证某事是英语是不可行的。您需要定义英语是什么,这几乎是一项不可能完成的任务。

试探性地,你可以做一些事情,比如通过带有英语词典的拼写检查器运行值,或者使用例如 Google 语言 API 进行“自动检测语言”调用,但这肯定不是 100% 可靠的,尤其是短字段(尚不清楚您要验证哪个字段,但它们看起来都像是短输入)。

于 2012-07-12T14:17:16.120 回答
0

我可以想到两种方法来实现这一点。

第一种: 下载包含尽可能多单词的 XML(或其他格式)英语词典。然后通过散列每个单词在索引文件中创建。然后散列输入中的每个单词,最后将其与索引文件进行比较。

第二: 您可以找到英语的 CFG。然后得到一个词法和句法分析器,它可以根据 CFG 解析你的输入,看看输入是否真的是英文的。

在我看来,这并不容易实现。但如果其他人能想到更简单的方法,请分享。

最好的祝福。

于 2012-07-12T14:21:37.733 回答
0

您应该使用巧合指数。当您评估足够的文本时,它是相当准确的。可能结合正则表达式查找某些特征组合(例如“th”)或使用正则表达式查找文章(a、an & the)。

下一步可能是当你有另一种分数大致相同的语言时,比如德语,通过寻找 Ringel-S 来更仔细地检查它。

最后但可能不需要的步骤是根据某种字典检查单词。例如,也许您可​​以使用dictionary.reference.com来检查您查找的单词是否返回结果而不是未找到的响应。如果您可以修复 POST 和 GET 到这样的站点,您可以在另一个检查中构建。

同样,您需要有一些文本。不只是几个词......我在某个地方有一张表格,定义了几种语言。如果你自己找不到,如果你愿意,我可以发给你。

于 2012-07-12T14:35:11.197 回答
0

非常简单的解决方案是使用正则表达式。这是我曾经使用过的:

if( Regex.IsMatch(Console.ReadLine(), "^[a-zA-Z0-9]*$") )
{ 
}
于 2017-11-03T13:24:03.657 回答