我们应该在C#中使用String.format还是String.replace?

时间:2019-01-23 20:52:00

标签: c# string replace string-formatting stringbuilder

我们正在尝试创建一个显示用户消息的应用程序。 以下是一些示例消息:

  • “您从{Offerclub}获得了{PlayerName}的要约。他们将支付{Offer}。”
  • “ {Offerclub}希望以{Offer}的价格购买{Playername}。

我们正在从数据库中获取这些字符串。 (我们的第一个尝试是创建一个具有不同功能的类,该类将字符串返回给我们。我们使用了字符串插值法。然后我们意识到这不是一个好选择,因为用户无法自己创建内容/字符串,而我们每当我们在此类中创建更多字符串时,都必须更新我们的应用。)

我们知道的选项:

  1. String.format:类似的东西:

    字符串结果= string.Format(“ {1} blalbal ...- {2} blabla ... {3}”,value1,value2,value3);

这里的问题:我们想像示例中那样使用输入位置不同的字符串。有时第一个是球员名称,有时是俱乐部名称...

  1. String.replace:我们考虑了固定的占位符名称,然后将使用replace进行更改。
  2. 字符串构建器:我们认为只是简单地浓缩我们的字符串。我们首先要从数据库中读取它们,然后使用String.split创建字符串数组。

问题:

  • 有更好的选择吗? (我们正在谈论一些消息。在最坏的情况下可能是几百条消息)我们更喜欢使用String.replace,因为这听起来是最简单的解决方案。

2 个答案:

答案 0 :(得分:4)

您只需将字符串格式存储在数据库中,变量的顺序就不需要一致吗?

SQL数据库

"You have an offer for {0} from {1}. They would pay {2}."
"{1} would like to buy {0} for {2}."

如果愿意,您甚至可以省略参数。

"{1} would like to buy {0}, they would like to discuss pricing."

c#

string format = GetStringFromDatabase(someIdentifier);
string message = String.Format(format, PlayerName, Offerclub, Offer);

答案 1 :(得分:-1)

有一种更好,更简单的方法来制作这些琴弦。您可以尝试使用以下示例:

string result = $"{value1} blalbal...- {value2}blabla... {value3}";

此“ $”符号允许您直接插入变量。