递归检查字符串中的所有字母是否都是大写

2024-05-21

我必须检查递归中所有字母是否都是大写字母,我不知道为什么这不起作用:

public static bool IsCapital(string str)
    {
        if (str.Length == 1)
            return int.Parse(str[0].ToString()) > 65 && int.Parse(str[0].ToString()) < 90;
        return IsCapital(str.Substring(1)) && int.Parse(str[0].ToString()) > 65 && int.Parse(str[0].ToString()) < 90;
    }

它崩溃并显示:“未处理的异常:System.FormatException:输入字符串的格式不正确。”

Console.WriteLine(IsCapital("abc"));

thanks.


要单独解决异常,只需不解析字符串即可。您可以直接比较char to any ushort value.

换句话说,这是一个有效的检查(没有字符串解析)

str[0] > 65

AsciiTable.com http://www.asciitable.com/应该告诉你为什么你的检查会在边缘失败。

还考虑...

  • 非字母的字符。
  • IsCapital(null)

最后,可能会让这变得更容易(假设非字母被绕过)是创建一个沿着以下路线的方法bool IsNotLowerCase(char c).

注意——这些都假设是 ASCII,如我的链接所示。

如果您必须支持完整的 Unicode,希望您可以使用的方法char http://msdn.microsoft.com/en-US/library/system.char_methods%28v=vs.110%29.aspx.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

递归检查字符串中的所有字母是否都是大写 的相关文章