代码之家  ›  专栏  ›  技术社区  ›  user609511

字符串生成器et字符串格式的构造字符串

  •  -1
  • user609511  · 技术社区  · 6 年前

    在我得到可以直接写入代码的修复项之前:

     public static string GetCsvStringFormat(int count)
            {
                var sb = new StringBuilder();
                for (int i = 0; i < count; i++)
                {
                    sb.AppendFormat("{{{0}}};", i);
                }
    
                return sb.ToString();
            }
    
        return string.Format(
            RefTypeParseExtension.GetCsvStringFormat(3),
            "No Id","Article","Amount"
        );
    

    但现在项目是动态的,可能只有1个或2个或更多项目。

    我已尝试使用array:

    string[] Tete = { "No Id","Article","Amount","IsFix"}
    string temp = "";
    for (int i = 0; i < Tete.Length; i++)
    {
        if (i != Tete.Length-1) { temp += "\"" + Tete[i] + "\","; }
        else { temp += "\"" + Tete[i] + "\""; }
    }
    return string.Format(
        RefTypeParseExtension.GetCsvStringFormat(Tete.Length),
        temp
    );
    

    我也尝试过使用字符串生成器:

    public static string GetTete(string[] Tete)
    {
        var sb = new StringBuilder();          
    
        for (int i = 0; i < Tete.Length; i++)
        {
            if (i != Tete.Length - 1) { sb.AppendFormat("\"{0}\",", Tete[i]); }
            else { sb.AppendFormat("\"{0}\"", Tete[i]); }
        }
    
        return sb.ToString();
    }
    

    两个我都收到了相同的错误:

    索引(零基)必须大于或等于零且小于参数列表的大小。

    尽管数组和字符串生成器返回的结果与原来完全一样。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Zohar Peled    6 年前

    我可能在这里遗漏了一些东西,但您的第一个代码示例正在处理 String.Format 接受 string params object[] args -所以我认为你应该这么做:

    public static string GetTete(string[] Tete)
    {
        return string.Format(RefTypeParseExtension.GetCsvStringFormat(Tete.Length), Tete);
    }