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
"
);
查看全文
相关阅读:
kmeans 聚类
HTTP与HTTPS相关知识
如何和统计学家分享数据How to share data with a statistician
使用 Python 进行 T检验
Jupyter Lab目录插件安装
【Python项目】爬取新浪微博个人用户信息页
【Python项目】爬取新浪微博签到页
使用SVN服务器管理源码
[转载]C++命名规则
C++&OpenCV中读取灰度图像到数组的两种
原文地址:https://www.cnblogs.com/dimg/p/707338.html
最新文章
(转)Unity3d使用心得(1):ModelImporter的使用、在代码中添加动画片段。
(转)Unity3d使用心得(2):Unity3d 动态下载动画资源——AnimationClip 的使用
(转)Unity3D协同程序(Coroutine)
Unity3d之MonoBehavior的各个函数的执行顺序,回调,顺序,次数等
Unity3D AssetBundles 动态加载游戏资源
Flash3D学习计划(四)——学习纹理相关知识,载入一张纹理,并应用于前面的矩形;并学习多层纹理映射相关知识,尝试dark map, glow map
Flash3D学习计划(三)——学习VB,IB相关,理解三角形顶点顺序;在屏幕上显示2D矩形,并实现缩放,平移,旋转
72. Edit Distance
5. Longest Palindromic Substring
516. Longest Palindromic Subsequence
热门文章
62. Unique Paths
392. Is Subsequence
486. Predict the Winner
650. 2 Keys Keyboard
357. Count Numbers with Unique Digits
343. Integer Break
646. Maximum Length of Pair Chain
如何舒适地查找文献、阅读文献、管理文献
如何将txt文件转换为带章节目录的mobi文件
百度地图POI爬取
Copyright © 2011-2022 走看看