Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检查所有特殊字符,包括0和1以外的数字。。。等等)?_C# - Fatal编程技术网

C# 如何检查所有特殊字符,包括0和1以外的数字。。。等等)?

C# 如何检查所有特殊字符,包括0和1以外的数字。。。等等)?,c#,C#,我想检查所有特殊字符,包括0和除1之外的数字。。。等等。我怎样才能做到 我写了下面的代码,它适用于特殊字符,但当我检查字母表时,它只适用于a,z和a,z private bool checkSpecialCharacters(string Version1, string Version2) { string splChars = @"%!@#$%^&*()?/>.<,:;'\|}]{[_~`+=-öüäß[^a-zA-Z]" + "\"" + @"^[a-zA-Z0

我想检查所有特殊字符,包括0和除1之外的数字。。。等等。我怎样才能做到

我写了下面的代码,它适用于特殊字符,但当我检查字母表时,它只适用于a,z和a,z

private bool checkSpecialCharacters(string Version1, string Version2)
{
    string splChars = @"%!@#$%^&*()?/>.<,:;'\|}]{[_~`+=-öüäß[^a-zA-Z]" + "\"" + @"^[a-zA-Z0]";

    char[] splCharsArray = splChars.ToCharArray();

    int Index1 = Version1.IndexOfAny(splCharsArray);
    int Index2 = Version2.IndexOfAny(splCharsArray);

    //index == -1 no special characters
    if (Index1 == -1 && Index2 == -1)
    {
        return false;
    }
    else 
    {
        return true;
    }
}
private bool checkSpecialCharacters(字符串版本1,字符串版本2)
{

字符串splChars=@“%!@$%^&*()?/>。您的问题并不完全清楚您想做什么。也就是说,我无法从描述中判断应该为任何任意输入提供什么输出

也就是说,似乎您可能试图标记任何包含除拉丁字母表中的字母以外的任何字符的字符串(即
A
Z
,大写和小写)

如果这是真的,那么你可以这样做:

private static bool checkSpecialCharacters(string Version1, string Version2)
{
    Tuple<char, char>[] charRanges =
    {
        Tuple.Create('A', 'Z'),
        Tuple.Create('z', 'z'),
    };

    return !AllInRange(Version1, charRanges) || !AllInRange(Version2, charRanges);
}

private static bool AllInRange(string text, Tuple<char, char>[] charRanges)
{
    foreach (char ch in text)
    {
        bool inRange = false;

        foreach (Tuple<char, char> range in charRanges)
        {
            if (range.Item1 <= ch && ch <= range.Item2)
            {
                inRange = true;
                break;
            }
        }

        if (!inRange)
        {
            return false;
        }
    }

    return true;
}
上面做的基本相同,但是让
Regex
类来完成这项工作。
Regex
的实例创建一次,每个方法调用都会共享一次。表达式就是
[^A-Za-z]
,表示不在包含
a
Z
a
Z
的字符集中的任何字符(即拉丁字母表中的大写字母和小写字母)将发生匹配

在此版本中,如果在任一字符串中找到与表达式匹配的字符(即不在指定的
a-Za-z
集合中的任何字符),则该方法返回
true
,表示找到了“特殊”字符



如果这些代码示例不能满足您的需要,那么请修复您的问题,以明确您的需要。请阅读以获取有关如何以清晰、负责的方式表达您的问题的建议。

您是否希望
a-Z
检查整个字母表?这不是正则表达式。因此,请使用正则表达式或扩展列表以包括所有字符。另外,与其检查所有其他字符,不如检查它们是否只包含数字?
返回Version1.all(Char.IsDigit)和&Version2.all(Char.IsDigit)
。因为在您的splChars字符串中,您只给出了a、a、z、z,所以它只检查了这四个……您需要在这里键入所有字母。谢谢您的建议。
private static readonly Regex _alphaRegex =
    new Regex(@"[^A-Za-z]", RegexOptions.Compiled);

private static bool checkSpecialCharacters(string Version1, string Version2)
{
    return _alphaRegex.IsMatch(Version1) || _alphaRegex.IsMatch(Version2);
}