如何验证文本框以检查输入的值是否为英语

时间:2012-07-12 14:12:56

标签: c# wpf validation textbox

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

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 个答案:

答案 0 :(得分:2)

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

启发式地,你可以做一些事情,比如通过带有英语字典的拼写检查器来运行价值,或者使用例如“auto-detect language”呼叫进行“{{3}}”呼叫。谷歌语言API,但这肯定不是100%可靠,特别是对于短字段(不清楚你要验证哪个字段,但它们看起来都有短输入)。

答案 1 :(得分:0)

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

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

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

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

最诚挚的问候。

答案 2 :(得分:0)

您应该使用index of coincidence。评估足够的文本时,它是相当准确的。也许结合正则表达式寻找某些特征组合(例如“th”)或使用正则表达式来寻找文章(a,an&amp; the)。

下一步可能是当你有另一种语言具有大约相同的分数时,让我们说德语,例如通过寻找Ringel-S来更加密切地对其进行分析。

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

同样,你需要一些文字。不只是几句话......我在某个地方定义了一些语言。如果你自己找不到,我可以寄给你,如果你愿意的话。

答案 3 :(得分:0)

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

if( Regex.IsMatch(Console.ReadLine(), "^[a-zA-Z0-9]*$") )
{ 
}