首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当使用String.Format时,如果字符串值不是null或空的,是否有一种简单的方法可以在字符串值周围添加括号

当使用String.Format时,如果字符串值不是null或空的,是否有一种简单的方法可以在字符串值周围添加括号
EN

Stack Overflow用户
提问于 2010-07-01 12:53:59
回答 6查看 4.1K关注 0票数 7

为了本地化目的,我试图隔离某些消息的格式设置。在其中一种情况下,我有几个参数,其中一些参数可能是空字符串。这里可能需要一个例子..。

如果参数是参数1和参数2,那么我希望结果是消息参数1(参数2)。

如果参数是参数1和string.Empty,那么我希望结果是一些消息参数1

如果参数2是一个数值,那么我可以使用以下内容:

String.Format("Test {0}{1:' ('#')'}", "Parameter one", 12);

这就像我所期望的那样--特别是如果第二个参数为null,那么输出就是。

不幸的是,我还没有(还)找到一个类似的选项,它适用于字符串参数。有一个吗?

Clarification:我非常清楚如何在代码中获得所需的结果。我特别想知道是否存在类似于上面所示的数字机制的字符串内置机制。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-07-01 12:59:31

您可以始终尝试通过实现IFormatProvider and ICustomFormatter来编写您自己的自定义字符串格式化程序。

然后调用它作为

代码语言:javascript
运行
复制
var stringValue = string.Format(new NewCustomStringFormatInfo(),
     "Test {0}{1:' ('#')'}", "Parameter one", 12)
票数 4
EN

Stack Overflow用户

发布于 2010-07-01 12:59:44

取决于你的情况,但你可以

代码语言:javascript
运行
复制
string.Format(yourFormatString, paramOne, paramTwo).Replace("()", "");

没有任何保证,因为这并不是防止愚昧的,并且做了一个很大的假设:如果paramTwo是空的,那么生成的字符串只会有"()“。

票数 2
EN

Stack Overflow用户

发布于 2010-07-01 13:07:45

您可以创建一个扩展方法来帮助处理这个问题,并使它更加简洁。

代码语言:javascript
运行
复制
public static string SomeWellNamedExtension(this string s)
{
    if(string.IsNullOrEmpty(s))
        return "";

    return string.Format("({0})", s);
}

此方法将处理空/空检查和父文件。这是一种非常专门的方法,所以它不太可能在任何其他地方都有用。但是这样你的代码就会像:

代码语言:javascript
运行
复制
string.Format("Test {0}{1}, paramOne, paramTwo.SomeWellNamedExtension());

然而,ymmv。这将影响您的格式字符串,因为父母不再是它的责任。我想不出很多非常优雅的处理用例的方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3157952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档