您的位置:首页 > 编程语言 > C#

c#中如何判断字符串是否为数字

2006-12-29 20:23 696 查看
  
[align=center]c#中如何判断字符串是否为数字[/align]
 
原创(相吻合用于任意长度)

[align=left]  public static bool StrIsInt(string Str)[/align]
[align=left]         {[/align]
[align=left]              bool flag = true;[/align]
[align=left]              if(Str != "")[/align]
[align=left]              {[/align]
[align=left]                   for(int i = 0 ;i<Str.Length;i++)[/align]
[align=left]                   {[/align]
[align=left]                        if(!Char.IsNumber(Str,i))[/align]
[align=left]                       {[/align]
[align=left]                            flag = false;[/align]
[align=left]                            break;[/align]
[align=left]                       }[/align]
[align=left]                   }[/align]
[align=left]              }[/align]
[align=left]              else[/align]
[align=left]              {[/align]
[align=left]                   flag = false;[/align]
[align=left]              }[/align]
[align=left]              return flag;[/align]
     }
正则表达
string regex = @^/d+$;

自己写个方法吧:这是我写的.
          private bool isNumber(string s)
 {
  int Flag = 0;
  char[]str = s.ToCharArray();
  for(int i = 0;i < str.Length ;i++)
  {
   if (Char.IsNumber(str[i]))
   {
    Flag++;
   }
   else
   {
    Flag = -1;
    break;
   }
  }
  if ( Flag > 0 )
  {
   return true;
  }
  else
  {
   return false;
  }
          }

测试
                   private void Button1_Click(object sender, System.EventArgs e)
  {
   if (isNumber(TextBox1.Text.Trim()))
   {
    TextBox2.Text = 是数字;
   }
   else
   {
    TextBox2.Text = 不是数字;
   }

  }

try
{
 double.Parse(this.TextBox1.Text);
 Response.Write(是数字);
}
catch
{
 Response.Write(不是数字);
}

或者用正则表达式也可以:

using System.Text.RegularExpressions;
------------------------

Regex r=new Regex(@^/d+(/.)?/d*$);
if(r.IsMatch(this.TextBox1.Text))
{
 this.Response.Write(是数字);
}
else
{
 this.Response.Write(不是数字);
}

public static bool StrIsInt(string Str)
    {
      try
      {
        Int32.Parse(Str);
        return true;
      }
      catch
      {
        bool flag = false;
        return flag;
      }
    }

应该使用正则表达式:
string pattern = @^/d+(/./d)?$;
if(Text1.Text.Trim()!=)
{
if(!Regex.IsMatch(sign_money.Text.Trim(),pattern))
{
   Text1不是数字;
}
else
{
  Text1是数字;
}
}

补充

//正则匹配
匹配中文字符的正则表达式: [/u4e00-/u9fa5]
匹配双字节字符(包括汉字在内):[^/x00-/xff]
匹配空行的正则表达式:/n[/s| ]*/r
匹配HTML标记的正则表达式:/<(.*)>.*<///1>|<(.*) //>/
匹配首尾空格的正则表达式:(^/s*)|(/s*$)(像vbscript那样的trim函数)
匹配Email地址的正则表达式:/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*
匹配网址URL的正则表达式:http://([/w-]+/.)+[/w-]+(/[/w- ./?%&=]*)?
以下是例子:
利用正则表达式限制网页表单里的文本框输入内容:
用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^/u4E00-/u9FA5]/g,'')"
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^/u4E00-/u9FA5]/g,''))"

1.用正则表达式限制只能输入全角字符: onkeyup="value=value.replace(/[^/uFF00-/uFFFF]/g,'')"
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^/uFF00-/uFFFF]/g,''))"

2.用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^/d]/g,'')
"onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^/d]/g,''))"

3.用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[/W]/g,'')
"onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^/d]/g,''))"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息