我有以下内容:
var result = info.FirstName + " " + "(" + info.PhonNumber + ")";
请注意,名字和电话号码都是字符串值。
我想做的是,如果info.PhonNumber为null / empty,我不想在PhoneNumber周围显示括号。我知道如何使用IsNullOrEmpty方法,在这种情况下,我需要使用 if 语句,但是有没有一种更有效的方法来进行内联验证,以检查info.PhoneNumber是否为空并且没有串联。如果是的话
答案 0 :(得分:3)
我认为扩展方法更好:
public static string FormatIfNotNull(this string input, string formatString)
{
if(string.IsNullOrWhiteSpace(input))
return string.Empty;
return string.Format(formatString, input);
}
这更可重用和更干净。然后您可以这样称呼它:
var result = info.FirstName + info.PhonNumber.FormatIfNotNull(" ({0})");
这将导致以下输入/输出
info.FirstName = "Steve";
info.PhonNumber = "123.555.7890";
var result = info.FirstName + info.PhonNumber.FormatIfNotNull(" ({0})");
//result is "Steve (123.555.7890)"
info.FirstName = "Jerry";
info.PhonNumber = "";
var result = info.FirstName + info.PhonNumber.FormatIfNotNull(" ({0})");
//result is "Steve"
请注意,由于您的帖子中有错字,因此我保留了错字“ PhonNumber”。
提琴here
答案 1 :(得分:0)
我更喜欢$“”
var result = $"{info.FirstName} {(!string.IsNullOrEmpty(info.PhonNumber) ? $"({info.PhonNumber})" : "")}";
答案 2 :(得分:0)
快速出击:
var result = string.IsNullOrEmpty(info.PhoneNumber) ?
info.FirstName :
$"{info.FirstName} ({info.PhoneNumber})";
答案 3 :(得分:0)
您可以按以下方式使用所谓的三元运算符。就像if ... else语句,条件是问号之前的条件,并且else
被列替换:
var result = info.FirstName + (string.IsNullOrEmpty(info.PhonNumber) ? "" : " " + "(" + info.PhonNumber + ")");
答案 4 :(得分:-1)
你的意思是
var result = info.FirstName +
(string.IsNullOrEmpty(info.PhonNumber) ?
string.Empty : ( " (" + info.PhonNumber + ")" ));