簡體   English   中英

如何檢查字符串是否為數字並將其分配給nullable int?

[英]How to check if string is number and assign it to nullable int?

我有nullable int []和string。

string someStr = "123"; 

int? siteNumber = null;
string siteName= null;

在某些時候,我需要檢查字符串是否為數字。

為此,我嘗試了這個:

if (int.TryParse(someStr, out siteNumber)) 
    { } 
else 
    siteName = siteDescription;

但因為siteNumber可以為空,我得到這個錯誤:

cannot convert from 'out int?' to 'out int' 

如何檢查字符串是否為數字,如果是,我需要將其分配給nullable int?

您可以使用中間變量,因為out參數類型應完全匹配。

int siteNumberTemp;
if (int.TryParse(someStr, out siteNumberTemp)) 
{
   siteNumber = siteNumberTemp;
} 
else 
   siteName = siteDescription;

您可以編寫自定義方法來執行此操作。

public int? TryParseNullableValues(string val)
{
    int outValue;
    return int.TryParse(val, out outValue) ? (int?)outValue : null;
}

如果不使用其他變量,則無法執行此操作,因為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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM