\d+
соответствует любому положительному числу цифр внутри вашей строки, поэтому он соответствует первому 78
и преуспевает.
Используйте ^\d+$
.
Или, еще лучше : "78.46.92.168:8000".isdigit()
Нет встроенного способа сделать это. Однако вы можете заставить свой метод расширения возвращать строку или ноль, что позволит оператору объединения работать. Однако это было бы странно, и я лично предпочитаю ваш нынешний подход.
Поскольку вы уже используете метод расширения, почему бы просто не сделать тот, который возвращает значение или значение по умолчанию:
string result = s.SiteNumber.ConvertNullOrEmptyTo("No Number");
C # уже позволяет нам заменять значения для null
на ??
. Итак, все, что нам нужно, это расширение, которое преобразует пустую строку в null
, а затем мы используем его так:
s.SiteNumber.NullIfEmpty() ?? "No Number";
как насчет метода расширения строки ValueOrDefault ( )
public static string ValueOrDefault(this string s, string sDefault)
{
if (string.IsNullOrEmpty(s))
return sDefault;
return s;
}
или вернуть null, если строка пуста:
public static string Value(this string s)
{
if (string.IsNullOrEmpty(s))
return null;
return s;
}
Однако не пробовал эти решения.