如何检查字符串以确保它只包含数字,字母或空格?
答案 0 :(得分:59)
使用正则表达式的最简单方法:
Regular Expression for alphanumeric and underscores
在.net中使用正则表达式:
http://www.regular-expressions.info/dotnet.html
var regexItem = new Regex("^[a-zA-Z0-9 ]*$");
if(regexItem.IsMatch(YOUR_STRING)){..}
答案 1 :(得分:53)
简单:
function HasSpecialChars(string yourString)
{
return yourString.Any( ch => ! Char.IsLetterOrDigit( ch ) )
}
答案 2 :(得分:14)
string s = @"$KUH% I*$)OFNlkfn$";
var withoutSpecial = new string(s.Where(c => Char.IsLetterOrDigit(c)
|| Char.IsWhiteSpace(c)).ToArray());
if (s != withoutSpecial)
{
Console.WriteLine("String contains special chars");
}
答案 3 :(得分:11)
试试这种方式。
public static bool hasSpecialChar(string input)
{
string specialChar = @"\|!#$%&/()=?»«@£§€{}.-;'<>_,";
foreach (var item in specialChar)
{
if (input.Contains(item)) return true;
}
return false;
}
答案 4 :(得分:6)
String test_string = "tesintg#$234524@#";
if (System.Text.RegularExpressions.Regex.IsMatch(test_string, "^[a-zA-Z0-9\x20]+$"))
{
// Good-to-go
}
可在此处找到一个示例:http://ideone.com/B1HxA
答案 5 :(得分:4)
如果可接受字符列表非常小,您可以使用这样的正则表达式:
Regex.IsMatch(items, "[a-z0-9 ]+", RegexOptions.IgnoreCase);
此处使用的正则表达式查找az和0-9中的任何字符,包括空格(方括号[]内的内容),这些字符中有一个或多个(+符号 - 您可以使用*为0或更多)。最后一个选项告诉正则表达式解析器忽略大小写。
如果不是字母,数字或空格,这将失败。要在祝福列表中添加更多字符,请将其添加到方括号内。
答案 6 :(得分:3)
使用下面的常规表达式来验证字符串,以确保它只包含数字,字母或空格:
[a-zA-Z0-9 ]
答案 7 :(得分:1)
在这里使用C#和Linq的好方法:
public static bool HasSpecialCharacter(this string s)
{
foreach (var c in s)
{
if(!char.IsLetterOrDigit(c))
{
return true;
}
}
return false;
}
并像这样访问它:
myString.HasSpecialCharacter();
答案 8 :(得分:1)
您可以用布尔来做到。我最近一直在学习,发现我可以这样做。在此示例中,我正在检查用户对控制台的输入:
using System;
using System.Linq;
namespace CheckStringContent
{
class Program
{
static void Main(string[] args)
{
//Get a password to check
Console.WriteLine("Please input a Password: ");
string userPassword = Console.ReadLine();
//Check the string
bool symbolCheck = userPassword.Any(p => !char.IsLetterOrDigit(p));
//Write results to console
Console.WriteLine($"Symbols are present: {symbolCheck}");
}
}
}
如果字符串中存在特殊字符(symbolCheck),则返回“ True”;如果不存在,则返回“ False”。
答案 9 :(得分:0)
虽然有很多方法可以给这只猫剥皮,但我更喜欢将这些代码包装到可重用的扩展方法中,这样以后的工作就变得微不足道了。使用扩展方法时,您还可以避免使用 RegEx,因为它比直接字符检查慢。我喜欢使用 Extensions.cs NuGet 包中的扩展。它使这项检查变得如此简单:
using Extensions;
”。"smith23@".IsAlphaNumeric()
将返回 False 而 "smith23".IsAlphaNumeric()
将返回 True。默认情况下,.IsAlphaNumeric()
方法会忽略空格,但它也可以被覆盖,这样 "smith 23".IsAlphaNumeric(false)
将返回 False,因为空格不被视为字母表的一部分。MyString.IsAlphaNumeric()
。