如何检查字符串是否是数字,并将其分配给可空的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?

如何检查字符串是否是数字,并将其分配给可空的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);