如何检查输入是否是特定类型的字符串。所以没有数字,没有“/",...
答案 0 :(得分:15)
好吧,要检查输入实际上是System.String
类型的对象,您只需执行以下操作:
bool IsString(object value)
{
return value is string;
}
要检查string
是否只包含字母,您可以执行以下操作:
bool IsAllAlphabetic(string value)
{
foreach (char c in value)
{
if (!char.IsLetter(c))
return false;
}
return true;
}
如果您想要将这些结合起来,您可以这样做:
bool IsAlphabeticString(object value)
{
string str = value as string;
return str != null && IsAllAlphabetic(str);
}
答案 1 :(得分:10)
如果你的意思是“字符串完全是字母”,你可以这样做:
string myString = "RandomStringOfLetters";
bool allLetters = myString.All( c => Char.IsLetter(c) );
这是基于LINQ和Char.IsLetter方法。
答案 2 :(得分:6)
目前还不完全清楚你想要什么,但你可以用正则表达式来做。例如,要检查您的字符串是否只包含a-z或A-Z中的字母,您可以执行以下操作:
string s = "dasglakgsklg";
if (Regex.IsMatch(s, "^[a-z]+$", RegexOptions.IgnoreCase))
{
Console.WriteLine("Only letters in a-z.");
}
else
{
// Not only letters in a-z.
}
如果您还想允许空格,下划线或其他字符,只需将它们添加到正则表达式的方括号中即可。请注意,某些字符在正则表达式字符类中具有特殊含义,需要使用反斜杠进行转义。
您还可以使用\p{L}
代替[a-z]
来匹配任何被认为是字母的Unicode字符,包括外国字母表中的字母。
答案 3 :(得分:2)
using System.Linq;
...
bool onlyAlphas = s.All(c => (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'));
答案 4 :(得分:1)
这样的事情(未经测试)可能符合您的(模糊)要求。
if (input is string)
{
// test for legal characters?
string pattern = "^[A-Za-z]+$";
if (Regex.IsMatch(input, pattern))
{
// legal string? do something
}
// or
if (input.Any(c => !char.IsLetter(c)))
{
// NOT legal string
}
}