zoukankan
html css js c++ java
C#中如何判斷一個String是否為數字
Copied From
http://www.cnblogs.com/zm235/archive/2006/09/23/512742.html
方案一:TryCatch(执行效率不高)
private
bool
IsNumberic(
string
oText)
{
try
{
int
var1
=
Convert.ToInt32 (oText);
return
true
;
}
catch
{
return
false
;
}
}
方案二:正则表达式(推荐)
a)
using
System;
using
System.Text.RegularExpressions;
public
bool
IsNumber(String strNumber)
{
Regex objNotNumberPattern
=
new
Regex(
"
[^0-9.-]
"
);
Regex objTwoDotPattern
=
new
Regex(
"
[0-9]*[.][0-9]*[.][0-9]*
"
);
Regex objTwoMinusPattern
=
new
Regex(
"
[0-9]*[-][0-9]*[-][0-9]*
"
);
String strValidRealPattern
=
"
^([-]|[.]|[-.]|[0-9])[0-9]*[.]*[0-9]+$
"
;
String strValidIntegerPattern
=
"
^([-]|[0-9])[0-9]*$
"
;
Regex objNumberPattern
=
new
Regex(
"
(
"
+
strValidRealPattern
+
"
)|(
"
+
strValidIntegerPattern
+
"
)
"
);
return
!
objNotNumberPattern.IsMatch(strNumber)
&&
!
objTwoDotPattern.IsMatch(strNumber)
&&
!
objTwoMinusPattern.IsMatch(strNumber)
&&
objNumberPattern.IsMatch(strNumber);
}
b)
public
static
bool
IsNumeric(
string
value)
{
return
Regex.IsMatch(value,
@"
^[+-]?\d*[.]?\d*$
"
);
}
public
static
bool
IsInt(
string
value)
{
return
Regex.IsMatch(value,
@"
^[+-]?\d*$
"
);
}
public
static
bool
IsUnsign(
string
value)
{
return
Regex.IsMatch(value,
@"
^\d*[.]?\d*$
"
);
}
方案三:遍历
a)
public
bool
isnumeric(
string
str)
{
char
[] ch
=
new
char
[str.Length];
ch
=
str.ToCharArray();
for
(
int
i
=
0
;i
{
if
(ch[i]
<
48
||
ch[i]
>
57
)
return
false
;
}
return
true
;
}
b)
public
bool
IsInteger(
string
strIn)
{
bool
bolResult
=
true
;
if
(strIn
==
""
)
{
bolResult
=
false
;
}
else
{
foreach
(
char
Char
in
strIn)
{
if
(
char
.IsNumber(Char))
continue
;
else
{
bolResult
=
false
;
break
;
}
}
}
return
bolResult;
}
c)
public
static
bool
isNumeric(
string
inString)
{
inString
=
inString.Trim();
bool
haveNumber
=
false
;
bool
haveDot
=
false
;
for
(
int
i
=
0
;i
{
if
(Char.IsNumber(inString[i]))
{
haveNumber
=
true
;
}
else
if
(inString[i]
==
'
.
'
)
{
if
(haveDot)
{
return
false
;
}
else
{
haveDot
=
true
;
}
}
else
if
(i
==
0
)
{
if
(inString[i]
!=
'
+
'
&&
inString[i]
!=
'
-
'
)
{
return
false
;
}
}
else
{
return
false
;
}
if
(i
>
20
)
{
return
false
;
}
}
return
haveNumber;
}
方案四:改写vb的IsNumeric源代码(执行效率不高)
//
主调函数
public
static
bool
IsNumeric(
object
Expression)
{
bool
flag1;
IConvertible convertible1
=
null
;
if
(Expression
is
IConvertible)
{
convertible1
=
(IConvertible) Expression;
}
if
(convertible1
==
null
)
{
if
(Expression
is
char
[])
{
Expression
=
new
string
((
char
[]) Expression);
}
else
{
return
false
;
}
}
TypeCode code1
=
convertible1.GetTypeCode();
if
((code1
!=
TypeCode.String)
&&
(code1
!=
TypeCode.Char))
{
return
Utils.IsNumericTypeCode(code1);
}
string
text1
=
convertible1.ToString(
null
);
try
{
long
num2;
if
(
!
StringType.IsHexOrOctValue(text1,
ref
num2))
{
double
num1;
return
DoubleType.TryParse(text1,
ref
num1);
}
flag1
=
true
;
}
catch
(Exception)
{
flag1
=
false
;
}
return
flag1;
}
//
子函数
//
return Utils.IsNumericTypeCode(code1);
internal
static
bool
IsNumericTypeCode(TypeCode TypCode)
{
switch
(TypCode)
{
case
TypeCode.Boolean:
case
TypeCode.Byte:
case
TypeCode.Int16:
case
TypeCode.Int32:
case
TypeCode.Int64:
case
TypeCode.Single:
case
TypeCode.Double:
case
TypeCode.Decimal:
{
return
true
;
}
case
TypeCode.Char:
case
TypeCode.SByte:
case
TypeCode.UInt16:
case
TypeCode.UInt32:
case
TypeCode.UInt64:
{
break
;
}
}
return
false
;
}
//
-----------------
//
StringType.IsHexOrOctValue(text1, ref num2))
internal
static
bool
IsHexOrOctValue(
string
Value,
ref
long
i64Value)
{
int
num1;
int
num2
=
Value.Length;
while
(num1
<
num2)
{
char
ch1
=
Value[num1];
if
(ch1
==
'
&
'
)
{
ch1
=
char
.ToLower(Value[num1
+
1
], CultureInfo.InvariantCulture);
string
text1
=
StringType.ToHalfwidthNumbers(Value.Substring(num1
+
2
));
if
(ch1
==
'
h
'
)
{
i64Value
=
Convert.ToInt64(text1,
0x10
);
}
else
if
(ch1
==
'
o
'
)
{
i64Value
=
Convert.ToInt64(text1,
8
);
}
else
{
throw
new
FormatException();
}
return
true
;
}
if
((ch1
!=
'
'
)
&&
(ch1
!=
'
\u3000
'
))
{
return
false
;
}
num1
++
;
}
return
false
;
}
//
----------------------------------------------------
//
DoubleType.TryParse(text1, ref num1);
internal
static
bool
TryParse(
string
Value,
ref
double
Result)
{
bool
flag1;
CultureInfo info1
=
Utils.GetCultureInfo();
NumberFormatInfo info3
=
info1.NumberFormat;
NumberFormatInfo info2
=
DecimalType.GetNormalizedNumberFormat(info3);
Value
=
StringType.ToHalfwidthNumbers(Value, info1);
if
(info3
==
info2)
{
return
double
.TryParse(Value, NumberStyles.Any, info2,
out
Result);
}
try
{
Result
=
double
.Parse(Value, NumberStyles.Any, info2);
flag1
=
true
;
}
catch
(FormatException)
{
flag1
=
double
.TryParse(Value, NumberStyles.Any, info3,
out
Result);
}
catch
(Exception)
{
flag1
=
false
;
}
return
flag1;
}
方案五: 直接引用vb运行库(执行效率不高)
方法: 首先需要添加Visualbasic.runtime的引用
代码中Using Microsoft.visualbasic;
程序中用Information.isnumeric(
"
ddddd
"
);
查看全文
相关阅读:
正则表达式
kafka Auto offset commit faild reblance
安装包问题
身份证头像截取
web表单
模板与继承与控制语句
虚拟环境安装及Hello World
flask入门脚本解释
python3 邮件发送
ASP.NET MVC文件上传简单示例
原文地址:https://www.cnblogs.com/dimg/p/707338.html
最新文章
避免调试代码导致IE出错
Javascript实践技巧
Javascript高级技巧
整理Ajax的点点滴滴
判断变量类型中的坑
关于HTML语义化的一些理解
谈谈网页的字体的设置
JS中给正则表达式加变量
判断文档离浏览器顶部的距离
CKA概述、考试形式、考试地址、考纲占比等
热门文章
搭建博客时,被mysql的sql_mode中ONLY_FULL_GROUP_BY坑倒了
5分钟搭建个博客玩玩
kubernetes垃圾回收器GarbageCollector 源码分析(三)
kubernetes自定义资源对象高级功能
一次写shell脚本的经历记录——特殊字符惹的祸
史上最全k8s必学必会知识梳理
kube-scheduler调度扩展
开发一个operator扩展kubernetes的能力
kubernetes pod exec接口调用
python3 结束子线程
Copyright © 2011-2022 走看看