这种字符串操作好吗?

时间:2011-04-30 17:56:31

标签: c# string stringbuilder

public string Format { get { return string.Format("{0}{1}v{1}", LastManStanding ? "FFA " : string.Empty, m_Teams.PlayersPerTeam); } }

我应该使用StringBuilder吗?

我不确定有条件地格式化这样的字符串是错误的,而不是做

public string Format 
{
    get
    {
        StringBuilder sb = new StringBuilder();

        if(LastManStanding)
            sb.Append("FFA ");

        sb.Append(string.Format("{0}v{0}", m_Teams.PlayersPerTeam);
        return sb.ToString();
    }
}

6 个答案:

答案 0 :(得分:5)

对于这样的小字符串,你正在做的事情很好。

在处理数千个连接和/或字符串格式时使用StringBuilder


旁注:

而不是:

sb.Append(string.Format("{0}v{0}", m_Teams.PlayersPerTeam));

你可以这样做:

sb.AppendFormat("{0}v{0}", m_Teams.PlayersPerTeam);

答案 1 :(得分:1)

错了,没有。可读? MEH

一点格式化可以有很长的路要走

public string Format 
{ 
  get 
  { 
    return string.Format("{0}{1}v{1}", 
      LastManStanding ? "FFA " : string.Empty,
      m_Teams.PlayersPerTeam); 
  } 
}

答案 2 :(得分:0)

在我看来,第一个版本是首选,它清楚地表达了你的意图,它更简洁易读,然后是第二个,冗长的版本。我会像这样格式化它:

public string Format 
{ 
    get 
    { 
        return string.Format("{0}{1}v{1}", LastManStanding ? "FFA " : string.Empty,
                                           m_Teams.PlayersPerTeam); 
    } 
}

答案 3 :(得分:0)

如果您正在对长字符串进行编辑,则首选StringBuilder,在这种情况下您不需要它。

答案 4 :(得分:0)

同意所有人 - 对于这么小的字符串,没关系。请注意,使用StringBuilder重写更糟,因为您使用String.Format而不是StringBuilder.AppendFormat。

在你的情况下使用单格式字符串来创建结果字符串是有益的,如果你决定开始在其他语言中本地化你的程序 - 可以从资源中拉出格式化,但很难用StringBuilder创建代码尊重所有可能的语言。

实际上,故事的另一面可能没有使用StringBuilder或String.Format。有些人/团队不愿意使用? :运营商。知道为什么建议你重写一段代码将有助于重写目标。

答案 5 :(得分:0)

我将FFA和普通游戏的格式化逻辑分开:

public string Format 
{
    get
    {
        if(LastManStanding)
            return string.Format("FFA {0}v{0}", m_Teams.PlayersPerTeam);
        else
            return string.Format("{0}v{0}", m_Teams.PlayersPerTeam);
    }
}

阅读起来容易得多。从逻辑上讲,格式字符串也是分开的。很可能你会单独更改它们,我很惊讶你没有。 “FFA 2v2”对我来说没什么意义。