【问题标题】:C# numbers and LettersC# 数字和字母
【发布时间】:2011-02-08 11:59:38
【问题描述】:

我需要我的应用程序根据所选文本是否包含字母或除数字以外的任何内容执行操作。不要这样做。

如何判断字符串是字母还是数字?

很简单,但我不会写这段代码。

【问题讨论】:

  • 请说得更具体一些,你想知道它是只包含字母还是只包含数字?
  • @atticae - 很难说,但在我们的答案中,他可能会找到他可以使用的东西。

标签: c# datagridview


【解决方案1】:

你可以尝试这样做:

string myString = "100test200";
long myNumber;
if( long.TryParse( myString, out myNumber ){
  //text contains only numbers, and that number is now put into myNumber.
  //do your logic dependent of string being a number here
}else{
  //string is not a number. Do your logic according to the string containing letters here
}

如果您想查看字符串是否包含一个或多个数字,而不是所有数字,请改用此逻辑。

if (myString.Any( char.IsDigit )){
  //string contains at least one digit
}else{
  //string contains no digits
}

【讨论】:

  • long.Parse 如果数字大于 2^63 将失败
  • @Manu - 如果是这样,他可以使用我的第二种方法。如果他确实需要将号码用于任何事情,我的第一种方法很好,我猜他这样做是因为他试图弄清楚他的号码中是否有一个字母:)
  • 谢谢。这就是我要找的。但是如果 myString 是小数,它会认为它是字母,还有另一个问题。
  • 对不起,如果不是整数,我想说
  • @Acid - 我不是 100% 确定你在这里的意思。你能给我一个示例字符串,以及你需要的结果,然后我会帮助你。
【解决方案2】:
static bool IsNumeric(string str)
{
  foreach(char c in str)
    if(!char.IsDigit(c))
       return false;
  return true;
}

【讨论】:

  • 或简称str.All(char.IsDigit); ;)
【解决方案3】:

你可以用正则表达式来实现这一点

string str = "1029";
if(Regex.IsMatch(str,@"^\d+$")){...}

【讨论】:

    猜你喜欢
    • 2016-12-20
    • 2021-04-11
    • 2020-05-17
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多