[英]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.