我有一个输入字符串,我想验证它包含:
仅限信件或 只有字母和数字或者 只能使用字母、数字或下划线
为了澄清,我在代码中有3种不同的情况,每种情况调用不同的验证。用c#实现这个最简单的方法是什么?
我有一个输入字符串,我想验证它包含:
仅限信件或 只有字母和数字或者 只能使用字母、数字或下划线
为了澄清,我在代码中有3种不同的情况,每种情况调用不同的验证。用c#实现这个最简单的方法是什么?
当前回答
请找到验证字符是字母、数字还是空格的方法,否则附加下划线 (可根据需要随意修改)
public String CleanStringToLettersNumbers(String data)
{
var result = String.Empty;
foreach (var item in data)
{
var c = '_';
if ((int)item >= 97 && (int)item <= 122 ||
(int)item >= 65 && (int)item <= 90 ||
(int)item >= 48 && (int)item <= 57 ||
(int)item == 32)
{
c = item;
}
result = result + c;
}
return result;
}
其他回答
bool result = input.All(Char.IsLetter);
bool result = input.All(Char.IsLetterOrDigit);
bool result = input.All(c=>Char.IsLetterOrDigit(c) || c=='_');
如果你是一个新手,那么你可以参考我的代码..我所做的就是开一张支票,这样我就只能得到字母和空白!您可以在第二个if语句之后重复for循环,以再次验证字符串
bool check = false;
Console.WriteLine("Please Enter the Name");
name=Console.ReadLine();
for (int i = 0; i < name.Length; i++)
{
if (name[i]>='a' && name[i]<='z' || name[i]==' ')
{
check = true;
}
else
{
check = false;
break;
}
}
if (check==false)
{
Console.WriteLine("Enter Valid Value");
name = Console.ReadLine();
}
使用它扫描字符串的每个字符。
如果你想包含除“SPACE”之外的“许多”字符,你可以在1个IF语句后添加SWITCH语句。
string myInput = string.Empty;
bool check = false;
// Loops the input module
while (check is false)
{
Console.WriteLine("Enter Letters Only");
myInput = Console.ReadLine();
// Loops the SCANNING PROCCESS of each character of the string
for (int i = 0; i < myInput.Length; i++)
{
// Prints current scanning proccess 1 by 1(character by character) inside the string
Console.WriteLine("Checking Character \"{0}\" ",myInput[i]);
// Letters only
if (Char.IsLetter(myInput[i]))
{
check = true;
}
// Includes "SPACE" character
else if (myInput[i] == ' ')
{
check = true;
}
else
{
check = false;
Console.WriteLine("wrong input. \"{0}\" is not a string", myInput[e]);
Console.WriteLine("pls try again");
// Exits from loop of scanning proccess due to unwanted input
break;
}
}
// Ends SCANNING of 1 CHARACTER inside the string
}
Console.WriteLine("Input Approved: \"{0}\"", myInput);
Console.WriteLine("Press any key to exit");
Console.ReadKey();
输出:错误输入
只输入字母 代理47 检查字符“A” 检查字符“g” 检查字符“e” 检查字符“n” 检查字符“t” 检查字符" " 检查字符“4” 哦。“4”不是有效输入 请再试一次 只输入字母
输出:无错误输入
只输入字母 特工47 检查字符“A” 检查字符“g” 检查字符“e” 检查字符“n” 检查字符“t” 检查字符" " 检查字符“F” 检查字符“o” 检查字符“r” 检查字符“t” 检查字符“y” 检查字符" " 检查字符“S” 检查字符“e” 检查字符“v” 检查字符“e” 检查字符“n” 批准输入:“47号特工” 按任意键退出
或SWITCH语句,如果你只想包括“一些”字符从字母类别和“一些”字符从数字类别。
switch (myInput[e])
{
case 'a':
case 'b':
case 'c':
case 'd':
case '1':
case '2':
case '3':
case '!':
case '@':
case '#':
check = true;
break;
default:
check = false;
Console.WriteLine("Oops, \"{0}\" is not a string", myInput[i]);
Console.WriteLine("pls try again\n");
break;
}
if (check == false) break ;
你可以循环字符串的字符,并使用字符方法IsLetter检查 但是你也可以使用String方法IndexOfAny来搜索其他不应该在字符串中的字符。
只有字母:
Regex.IsMatch(input, @"^[a-zA-Z]+$");
仅限字母和数字:
Regex.IsMatch(input, @"^[a-zA-Z0-9]+$");
只有字母、数字和下划线:
Regex.IsMatch(input, @"^[a-zA-Z0-9_]+$");