string valueStr = " "; //"(123)-456-7890" or null or " " or "" or string.Empty or "abcdef"
int valueInt;
if (valueStr.Trim() != null || valueStr.Trim() != string.Empty || valueStr.Trim() != "")
{
//Perform regex routine to convert valueStr to valueInt and get only digits
}
else
{
valueInt = null;
}
Я буду вставлять данные в SQL Db. Я пытаюсь очистить буквенно-числовой столбец {(n) varchar} только числовым {int}.C# - Ошибка преобразования Null
Однако приведенная выше логика дает мне ошибку для "valueInt = null;" часть.
Error = "Cannot convert null to int because it is a non-nullable value type"
Как я могу убедиться, что код будет выполнять регулярные функции выражения только для строк, имеют некоторые данные и выдает ноль, если нет данных?
Спасибо
Update:
string valueStr = " "; //"(123)-456-7890" or null or string.Empty or " " or "abcdef"
int? valueInt;
if (valueStr != null && valueStr.Trim() != "")
{
string pattern = string.Empty;
pattern = "[^0-9]";
Regex r = null;
r = new Regex(pattern, RegexOptions.Compiled);
try
{
valueInt = Convert.ToInt32(Regex.Replace(valueStr, pattern, string.Empty));
}
catch
{
valueInt = null;
}
Console.WriteLine(valueInt);
Console.ReadLine();
}
else
{
valueInt = null;
Console.WriteLine(valueInt);
Console.ReadLine();
}
Сделать это обнуляемым ..? –
Сделайте его нулевым или равным некоторому значению, например '-1'. –
Код может быть только для демонстрации, но на всякий случай стоит отметить, что в вашей третьей строке, если 'valueStr' равно null, вы получите' NullReferenceException'. Кажется, что нет никакого способа .Trim() 'может возвращать null в противном случае, поэтому вы можете удалить' .Trim() 'из первой части условия. – TheEvilPenguin