我想要查找一个字符串是否包含任何特殊字符,例如!、@、#、$、%、^、&、*、(、)等。
如何在不循环遍历字符串中的所有字符的情况下完成这个操作?
我想要查找一个字符串是否包含任何特殊字符,例如!、@、#、$、%、^、&、*、(、)等。
如何在不循环遍历字符串中的所有字符的情况下完成这个操作?
使用String.IndexOfAny
方法:
private static readonly char[] SpecialChars = "!@#$%^&*()".ToCharArray();
...
int indexOf = text.IndexOfAny(SpecialChars);
if (indexOf == -1)
{
// No special chars
}
当然,这将在内部循环 - 但至少你不必在你的代码中这样做。与其检查字符串是否包含“特殊字符”,不如检查字符串中的所有字符是否是“普通”字符,换句话说,使用白名单而不是黑名单。原因是有很多字符可能被认为是“特殊字符”,如果尝试列出所有这些字符,则必定会漏掉某个。
因此,与其按照您所要求的方式进行操作,还不如检查例如您的字符串是否与正则表达式@"^\w+$"
相匹配,或者您需要其他的匹配方式。
Regex RgxUrl = new Regex("[^a-z0-9]");
blnContainsSpecialCharacters = RgxUrl.IsMatch(stringToCheck);
à
,这对于OP来说是一个特殊字符吗?(当然不是,OP已经接受了答案) - user757095Linq是新潮流。
string.Any(c => char.IsSymbol(c));
编辑:
这不能捕获所有字符。可以补充使用以下内容:
string.Any(c => !char.IsLetterOrDigit(c));
以下是使用LINQ检查特殊字符的简短解决方案:
private bool ContainsSpecialChars(string value)
{
var list = new[] {"~", "`", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "+", "=", "\""};
return list.Any(value.Contains);
}
//apart from regex we can also use this
string input = Console.ReadLine();
char[] a = input.ToCharArray();
char[] b = new char[a.Length];
int count = 0;
for (int i = 0; i < a.Length; i++)
{
if (!Char.IsLetterOrDigit(a[i]))
{
b[count] = a[i];
count++;
}
}
Array.Resize(ref b, count);
foreach(var items in b)
{
Console.WriteLine(items);
}
Console.ReadLine();
//it will display the special characters in the string input
我试图实现一个不同的结果。创建一种方法,返回用于分隔给定字符串(例如1#4#5)的特殊字符,然后使用它来拆分同一字符串。 由于我维护的系统由许多不同的人构建,在某些情况下,我不知道哪种模式(通常没有),以下内容对我帮助很大。目前我还不能进行投票。
public String Separator(){
**String specialCharacters = "%!@#$#^&*()?/>.<:;\\|}]{[_~`+=-" +"\"";**
char[] specialCharactersArray = specialCharacters.toCharArray();
char[] a = entrada.toCharArray();
for(int i = 0; i<a.length; i++){
for(int y=0; y < specialCharactersArray.length; i++){
if(a[i] == specialCharactersArray[y]){
separator = String.valueOf(specialCharactersArray[y]);
}
}
}
return separator;
}
public static bool HasSpecialCharacters(string str)
{
string specialCharacters = @"%!@#$%^&*()?/>.<,:;'\|}]{[_~`+=-" +"\"";
char[] specialCharactersArray = specialCharacters.ToCharArray();
int index = str.IndexOfAny(specialCharactersArray);
//index == -1 no special characters
if (index == -1)
return false;
else
return true;
}
def splchar(str):
splchar=("~", "`", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "+", "=")
for chr in splchar:
if (chr in str):
print("not accepted")
break
else:
print("accepted")
str="GeeksForGeeks"
splchar(str)
另外...
foreach (char character in "some*!@#@!#string")
{
if(!Char.IsLetterOrDigit(character))
{
//It is a special character.
}
}