我必须检查递归中所有字母是否都是大写字母,我不知道为什么这不起作用:
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/应该告诉你为什么你的检查会在边缘失败。
还考虑...
最后,可能会让这变得更容易(假设非字母被绕过)是创建一个沿着以下路线的方法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(使用前将#替换为@)