我想做一些条件格式的字符串.我知道您可以按如下方式对整数和浮点数进行一些条件格式化:
Int32 i = 0; i.ToString("$#,##0.00;($#,##0.00);Zero");
如果变量为正,负或零,则上述代码将产生三种格式之一.
我想知道是否有任何方法可以使用字符串参数的部分.对于一个具体的,但人为的例子,我将寻找替换以下代码中的"if"检查:
string MyFormatString(Listitems, List values) { string itemList = String.Join(", " items.ToArray()); string valueList = String.Join(", " values.ToArray()); string formatString; if (items.Count > 0) //this could easily be: //if (!String.IsNullOrEmpty(itemList)) { formatString = "Items: {0}; Values: {1}"; } else { formatString = "Values: {1}"; } return String.Format(formatString, itemList, valueList); }
Jon Skeet.. 35
好吧,您可以使用条件运算符简化它:
string formatString = items.Count > 0 ? "Items: {0}; Values: {1}" : "Values: {1}"; return string.Format(formatString, itemList, valueList);
或者甚至将它包含在同一声明中:
return string.Format(items.Count > 0 ? "Items: {0}; Values: {1}" : "Values: {1}", itemList, valueList);
这就是你要追求的吗?我不认为你可以有一个格式字符串,有时包括位,有时它不包含.
好吧,您可以使用条件运算符简化它:
string formatString = items.Count > 0 ? "Items: {0}; Values: {1}" : "Values: {1}"; return string.Format(formatString, itemList, valueList);
或者甚至将它包含在同一声明中:
return string.Format(items.Count > 0 ? "Items: {0}; Values: {1}" : "Values: {1}", itemList, valueList);
这就是你要追求的吗?我不认为你可以有一个格式字符串,有时包括位,有时它不包含.
不在String.Format()中,但您可以使用C#的内联运算符,例如:
return items.Count > 0 ? String.Format("Items: {0}; Values: {1}", itemList, valueList) : String.Format("Values: {0}", valueList);
这将有助于整理代码.