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

我们应该在C#中使用String.format还是String.replace?,c#,string,replace,string-formatting,stringbuilder,C#,String,Replace,String Formatting,Stringbuilder,我们正在尝试创建一个显示用户消息的应用程序。 以下是一些示例消息: “你有一个来自{offerlub}的{PlayerName}报价,他们会支付{offer}” “{Offerclub}想以{Offer}的价格购买{Playername}” 我们正在从数据库中获取这些字符串。 (我们的第一次尝试是创建一个具有不同函数的类,该类返回字符串。我们使用字符串插值。然后我们意识到这不是一个好的选择,因为用户不能自己创建内容/字符串,每次在该类中创建更多字符串时,我们都必须更新我们的应用程序。) 我们

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

  • “你有一个来自{offerlub}的{PlayerName}报价,他们会支付{offer}”
  • “{Offerclub}想以{Offer}的价格购买{Playername}”
我们正在从数据库中获取这些字符串。 (我们的第一次尝试是创建一个具有不同函数的类,该类返回字符串。我们使用字符串插值。然后我们意识到这不是一个好的选择,因为用户不能自己创建内容/字符串,每次在该类中创建更多字符串时,我们都必须更新我们的应用程序。)

我们知道的选择:

  • String.format:类似于:

    string result=string.Format(“{1}blalbal…-{2}blabla…{3}”,value1,value2,value3)

  • 这里的问题是:我们希望使用具有不同输入位置的字符串,就像在我们的示例中一样。有时第一个是玩家名,有时是俱乐部名

  • String.replace:我们考虑了固定的占位符名称,然后使用replace进行更改
  • 字符串生成器:我们想简单地集中我们的字符串。我们首先从数据库中读取它们,然后使用String.split创建一个字符串数组
  • 问题:

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

    您可以简单地将字符串格式存储在数据库中,变量的顺序不需要一致

    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 result=$“{value1}blalbal…-{value2}blablabla…{value3}”;
    

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

    可能已经有了用于此的库,您搜索过NuGet或GitHub吗?String.Replace是一种有效的方法。它根本不会减慢代码的速度。我想说,既然你知道这一点,就用它吧。只要这个程序有效,这应该是你的目标。在我的搜索中出现了两个。可能还有更多…但我们不知道代码中的字符串。我们从数据库中读取它们。(我们的第一次尝试是创建一个具有不同函数的类,该类返回字符串。我们使用字符串插值。然后我们意识到这不是一个好的选择,因为用户不能自己创建内容/字符串,每次在该类中创建更多字符串时,我们都必须更新我们的应用程序。)您是否已经尝试将从数据库读取的数据存储到一个变量中,然后重新使用它?@basti12354上述语法只是String.Format的一个语法糖。所以至少不要投反对票。@IvanIčin我知道。你读过我的问题了吗?我想我不能在我的情况下使用这种语法,是吗?然而,否决票不是我投的;)(他试图帮助我,我认为没有必要否决他的回答,尽管我认为我不能在我的情况下使用它。@basti12354我读过,你问是否使用String.Format或其他。如果String.Format有效,那么上面的这个也有效,因为它是用不同的方式编写的。谢谢,你知道这是否更有效吗比多次使用replace更令人尴尬的是,我们用错了在任何规模上构建字符串都不太可能成为性能问题,它的速度肯定会比数据库查找快很多倍。我建议使用
    string.Format
    ,因为它简洁易读。我想大多数程序员更愿意看到
    .Replace().Replace().Replace()
    string format = GetStringFromDatabase(someIdentifier);
    string message = String.Format(format, PlayerName, Offerclub, Offer);