字符串格式正确使用

时间:2016-05-17 17:23:41

标签: c# string format

你知道另一种更适合做同样事情的方法吗?

string initialTemplate = "{0}-{1}";
string template = string.Format(initialTemplate, "first", "{0}");
string answer = string.Format(template, "second");

另外,以下方式实际上已知,但在我目前的情况下,不幸的是我无法使用该方法(我认为这种方式更合适,逻辑更清晰):

string initialTemplate = "{0}-{{0}}";
string template = string.Format(initialTemplate, "first");
string answer = string.Format(template, "second");

也许有另外一个提示如何做到这一点?

更新 我很抱歉,但是从你的回答中我得知我的问题不够明确。所以我添加了更多的描述。

我的情况:

//that template is actually placed in *.resx file
//I want storing only one template and use that in different situations
public const string InitialTemplate = "{0}-{1}";

public static string GetMessage(string one, string two)
{
    return string.Format(InitialTemplate, one, two);
}

public static string GetTemplate(string one)
{
    return string.Format(InitialTemplate, one, "{0}");
}

//or morew universal way
public static string GetTemplate(params object[] args)
{
    return string.Format(InitialTemplate, args, "{0}");
}

static void Main(string[] args)
{
    //in almost all cases in my project i need to use string.format like this
    string message = GetMessage("one", "two");

    //but there is another way where i have to use 
    //the template have already been assigned first argument
    //the result must be "one-{0}"
    string getTemplateWithAssignedFirstArg = GetTemplate("one");
}

你知道更适合这种情况的方法吗?

3 个答案:

答案 0 :(得分:4)

如果您使用的是C#6,也可以使用字符串插值。 https://msdn.microsoft.com/en-us/library/dn961160.aspx

var answer = $"{firstVar}-{secondVar}";

答案 1 :(得分:3)

string initialTemplate = "{0}-{1}";
string answer = string.Format(initialTemplate, "first", "second");

应该做的伎俩。或者删掉中间人:

string answer = string.Format("{0}-{1}", "first", "second");

答案 2 :(得分:1)

String.Format是一个非常有用的便利,但我担心使用它来构建您将用于创建其他格式字符串的格式字符串。有人试图维护这些代码,弄清楚发生了什么,也许修改它将会感到困惑。以这种方式使用String.Format在技术上是可行的,甚至可能存在有用的情况,但它可能只是会产生一些有效但很难理解和调试的东西。

我的第一个建议是使用StringBuilder。即使您正在追加到StringBuilder,也可以根据需要使用String.Format创建单个字符串。

我想知道你在问题中描述的内容是否可能是在多个方法中进行的(这就是为什么你可能会逐步构建格式字符串的原因。)如果是这样的话,我建议你不要构建字符串。这样的步骤。实际上,在您拥有所需的所有数据之前,不要开始构建字符串,然后立即构建字符串。