【发布时间】:2011-04-03 09:20:12
【问题描述】:
我想取一个字符串并检查第一个字符是否为字母,大小写无关紧要,但它不应该是特殊的,空格,换行符,任何东西。如何在 C# 中实现这一点?
【问题讨论】:
标签: c# asp.net visual-studio
我想取一个字符串并检查第一个字符是否为字母,大小写无关紧要,但它不应该是特殊的,空格,换行符,任何东西。如何在 C# 中实现这一点?
【问题讨论】:
标签: c# asp.net visual-studio
试试下面的
string str = ...;
bool isLetter = !String.IsNullOrEmpty(str) && Char.IsLetter(str[0]);
【讨论】:
Char.IsLetter(str.FirstOrDefault())
试试下面的
bool isValid = char.IsLetter(name.FirstOrDefault());
【讨论】:
System.ArgumentNullException: 'Value cannot be null.',所以 FirstOrDefault 在这里没有用处。
return (myString[0] >= 'A' && myString[0] <= 'Z') || (myString[0] >= 'a' && myString[0] <= 'z')
【讨论】:
!String.IsNullOrEmpty(myString)。
您应该查找 ASCII 表,该表系统地将字符映射到整数值。所有小写字符都是连续的 (97-122),所有大写字符 (65-90) 也是如此。知道了这一点,您甚至不必转换为 int 值,只需检查字符串的第一个 char 是否在这两个范围之一(包括)内。
【讨论】:
A-Z 和 a-z 的顺序值,我更喜欢 Mark 的解决方案,因为他的解决方案避免使用幻数。您还可以调整您的解决方案以在某处定义常量以保持 97/122/65/90,但这会添加不需要的常量,因此我仍然更喜欢 Mark 的解决方案。当然,按照 JaredPar 的建议拨打 Char.IsLetter 会更好。