为了本地化目的,我试图隔离某些消息的格式设置。在其中一种情况下,我有几个参数,其中一些参数可能是空字符串。这里可能需要一个例子..。
如果参数是参数1和参数2,那么我希望结果是消息参数1(参数2)。
如果参数是参数1和string.Empty,那么我希望结果是一些消息参数1
如果参数2是一个数值,那么我可以使用以下内容:
String.Format("Test {0}{1:' ('#')'}", "Parameter one", 12);
这就像我所期望的那样--特别是如果第二个参数为null,那么输出就是。
不幸的是,我还没有(还)找到一个类似的选项,它适用于字符串参数。有一个吗?
Clarification:我非常清楚如何在代码中获得所需的结果。我特别想知道是否存在类似于上面所示的数字机制的字符串内置机制。
发布于 2010-07-01 12:59:31
您可以始终尝试通过实现IFormatProvider and ICustomFormatter
来编写您自己的自定义字符串格式化程序。
然后调用它作为
var stringValue = string.Format(new NewCustomStringFormatInfo(),
"Test {0}{1:' ('#')'}", "Parameter one", 12)
发布于 2010-07-01 12:59:44
取决于你的情况,但你可以
string.Format(yourFormatString, paramOne, paramTwo).Replace("()", "");
没有任何保证,因为这并不是防止愚昧的,并且做了一个很大的假设:如果paramTwo是空的,那么生成的字符串只会有"()“。
发布于 2010-07-01 13:07:45
您可以创建一个扩展方法来帮助处理这个问题,并使它更加简洁。
public static string SomeWellNamedExtension(this string s)
{
if(string.IsNullOrEmpty(s))
return "";
return string.Format("({0})", s);
}
此方法将处理空/空检查和父文件。这是一种非常专门的方法,所以它不太可能在任何其他地方都有用。但是这样你的代码就会像:
string.Format("Test {0}{1}, paramOne, paramTwo.SomeWellNamedExtension());
然而,ymmv。这将影响您的格式字符串,因为父母不再是它的责任。我想不出很多非常优雅的处理用例的方法。
https://stackoverflow.com/questions/3157952
复制相似问题