gpt4 book ai didi

c# - 如何确定字符串是否具有正则表达式元字符? (C#)

转载 作者:太空宇宙 更新时间:2023-11-03 20:45:33 24 4
gpt4 key购买 nike

System.Text.RegularExpressions 命名空间是否为我提供了任何东西来发现输入字符串是否具有(“abc[0-9]”或“^aeiou$”)或没有(“abc123”)元字符?还是我必须手动检查某个列表中的非转义字符?

最佳答案

您至少有三个选择:

  1. 使用 Regex.Escape并比较结果:

    private static bool ContainsMetaCharacters(string s)
    {
    if (String.IsNullOrEmpty(s))
    {
    return false;
    }
    string escaped = Regex.Escape(s);
    return !escaped.Equals(s, StringComparison.Ordinal);
    }
  2. 申请 Regex.Escape到每个字符以查看转义值是否不同:

    private static bool ContainsMetaCharacters(string s)
    {
    if (String.IsNullOrEmpty(s))
    {
    return false;
    }
    for (int i = 0; i < s.Length; i++)
    {
    if (Regex.Escape(s.Substring(i,1))[0] != s[i])
    {
    return true;
    }
    }
    return false;
    }
  3. 根据元字符不应更改的事实创建您自己的元字符:

    private static readonly char[] _MetaChars = 
    new char[]
    { '\t', '\n', '\f', '\r',
    ' ', '#', '$', '(', ')',
    '*', '+', '.', '?',
    '[', '\\', '^', '{', '|' };

    private static bool ContainsMetaCharacters(string s)
    {
    if(String.IsNullOrEmpty(s))
    {
    return false;
    }
    return s.IndexOfAny(_MetaChars) >= 0;
    }

第三种方法根据 RegexOptions 提供更多控制。你在你的正则表达式中使用。例如,如果您永远不会使用 RegexOptions.IgnorePatternWhitespace,则可以将空格作为元字符删除。

关于c# - 如何确定字符串是否具有正则表达式元字符? (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1013760/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com