【问题标题】:String EndsWith(alphabet); C#字符串结尾(字母); C#
【发布时间】:2011-12-15 04:42:23
【问题描述】:

我有一个字符串
string name="ajsbbc现在我想要一个识别字符串包含 [a-zA-Z] 的条件结束(真/假)

【问题讨论】:

    标签: .net regex c#-4.0


    【解决方案1】:

    这是一个正则表达式解决方案:

    Regex.IsMatch(name, "[a-zA-Z]$");
    

    【讨论】:

    • 但是这个 ragex 如何只检查最后一个字符
    • $ 标记字符串的结尾,因此如果存在与 [a-zA-Z] 的匹配项,则被测试的字符串必须以 [a-zA-Z] 集中的字符结尾。
    【解决方案2】:

    Char 类中已经有一个函数可以做到这一点。

        string name = "ajsbbc";
    
        if (Char.IsLetter(name[name.Length - 1]))
            Console.WriteLine("True");
        else
            Console.WriteLine("False");
    

    【讨论】:

    • 这比 A-Za-z 匹配更多 这将为 Café "Caf\u00e9" // U+00E9 LATIN SMALL LETTER E WITH ACUTE 写入 true,但当在 Café "Cafe\u0301" // U+0301 COMBINING ACUTE ACCENT 中使用字形时再次写入 false,请参阅 stackoverflow.com/questions/2056866/… 以获取解决方案可以处理字形
    【解决方案3】:

    将字符串的最后一个字符存储在临时字符串中,然后使用常规 exp 检查您的临时字符串
    Regex lettersOnly = new Regex("^[a-zA-Z]$");
    在哪里

    • ^ 表示“从字符串开头开始匹配”
    • [a-zA-Z] 表示“匹配小写和大写字母 a-z”
    • $ 表示“仅当光标位于字符串末尾时才匹配”
      tri它(我不确定它是否有效)

    【讨论】:

    • 去掉^,不需要预先解析字符串来获取最后一个字符。
    【解决方案4】:

    你可以使用这个函数并将你的字符串作为参数发送给这个

        private bool IsAlphabet(string input)
        {
            bool alphabet = false;
    
            char ch = input[input.Length - 1];
    
            if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
                alphabet = true;
    
            return alphabet;
        }
    

    【讨论】:

    • Ajit 请你解释一下你上面提到的条件,只是为了我而不是为了测试你的知识(我的意思是可以在 if 条件下应用 aloop 而不是字母)
    • 一些建议。您需要检查字符串是否为空或为空。你也只是说 return ((ch >= 'a' && ch = 'A' && ch
    猜你喜欢
    • 2019-02-22
    • 2011-06-06
    • 1970-01-01
    • 2019-09-25
    • 2020-12-28
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多