我想验证文本框以检查输入的值是否为英语 这是我的验证课
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
}
}
答案 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]*$") )
{
}