如何检查字符串是否是数字,并将其分配给可空的int
本文关键字:分配 int 何检查 检查 数字 是否是 字符串 | 更新日期: 2023-09-27 18:15:22
我有可空的int[]和string.
string someStr = "123";
int? siteNumber = null;
string siteName= null;
在某些地方,我需要检查字符串是否为number。
为此,我尝试这样做:
if (int.TryParse(someStr, out siteNumber))
{ }
else
siteName = siteDescription;
但是因为siteNumber是可空的,所以我得到这个错误:
cannot convert from 'out int?' to 'out int'
我如何检查字符串是否为数字,如果是,我需要将其分配给可空int?
您可以编写自定义方法来完成此操作。
public int? TryParseNullableValues(string val)
{
int outValue;
return int.TryParse(val, out outValue) ? (int?)outValue : null;
}
您可以使用一个中间变量,因为out
参数类型应该完全匹配。
int siteNumberTemp;
if (int.TryParse(someStr, out siteNumberTemp))
{
siteNumber = siteNumberTemp;
}
else
siteName = siteDescription;
如果不使用另一个变量,则无法做到这一点,因为out
参数的类型必须与参数完全匹配。
string someStr = "123";
int? siteNumber = null;
int tmp;
if (!int.TryParse(someStr.Trim(), out tmp))
{
//Do something if not parsed
}
else
{
siteNumber = tmp;
}
最好的方法是简单地使用这个函数将字符串转换为int,不管它是否可空。这个自定义函数将处理它。
public static Int32? CustomConvertToInt32(Object obj)
{
string _strData = CustomConvertToStringOrNull(obj);
Int32? _Nullable = null;
Int32 _data;
if (Int32.TryParse(_strData, out _data))
{
_Nullable = _data;
}
return _Nullable;
}
public static string CustomConvertToStringOrNull(Object obj)
{
string _Nullable = null;
if (obj != null)
{
if (obj.ToString().Trim() == "" || obj.ToString().Trim().ToLower() == "n/a")
{
_Nullable = null;
}
else
{
_Nullable = obj.ToString().Trim();
}
}
return _Nullable;
}
int? siteNumber = CustomConvertToInt32(someStr);