【问题标题】:convert string array to string将字符串数组转换为字符串
【发布时间】:2011-06-18 00:05:53
【问题描述】:

我想将字符串数组转换为单个字符串。

string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";

我想要“Hello World!”之类的东西

【问题讨论】:

    标签: c# arrays string


    【解决方案1】:
    string[] test = new string[2];
    
    test[0] = "Hello ";
    test[1] = "World!";
    
    string.Join("", test);
    

    【讨论】:

    • +1 - 正如@davidg 所指出的那样,我删除了 Join 中的空格以使其正确
    • 谢谢。我没有注意到尾随空格,即使我将其复制粘贴到我的答案中。
    • 我还需要在我的字符串(逗号和空格)之间放置一个分隔符,所以我使用了:var separator = ", ";string.Join(separator , test);
    • 很好的答案。不过,我建议使用string.Join(string.Empty, test) 而不是empty-paranthesis
    【解决方案2】:

    比使用已经提到的Join() 方法稍 的选项是Concat() 方法。它不需要像Join() 那样的空分隔符参数。示例:

    string[] test = new string[2];
    test[0] = "Hello ";
    test[1] = "World!";
    
    string result = String.Concat(test);
    

    因此它可能更快。

    【讨论】:

    • Concat 更好,在Join 的内部代码中,它会在每个项目后附加分隔符。但是Concat没有这样的代码,比Join更简单直接。这是最合适的答案。
    【解决方案3】:

    你需要一个简单的 string.Concat()。

    string[] test = new string[2];
    
    test[0] = "Hello ";
    test[1] = "World!";
    
    string result = string.Concat(test);
    

    如果您还需要添加分隔符(空格、逗号等),则应使用 string.Join()。

    string[] test = new string[2];
    
    test[0] = "Red";
    test[1] = "Blue";
    
    string result = string.Join(",", test);
    

    如果您必须在具有数百个元素的字符串数组上执行此操作,那么从性能的角度来看,string.Join() 会更好。只需给出一个“”(空白)参数作为分隔符。也可以使用 StringBuilder 以提高性能,但它会使代码变长一些。

    【讨论】:

    • ConcatJoinStringBuilder 快,如果你有 4 个或更少的字符串要连接。
    • 这是最好的答案!
    【解决方案4】:

    试试:

    String.Join("", test);
    

    它应该返回一个将两个元素连接在一起的字符串。 "" 表示您希望将字符串连接在一起而不使用任何分隔符。

    【讨论】:

    • 那不是“HelloWorld!”吗?单词之间没有空格?
    • @jmort253 - 问题中的原始字符串 "Hello " 已经有一个尾随空格。如果空间不存在,那么您是正确的,使用" " 作为分隔符会更有意义。
    【解决方案5】:

    Aggregate也可以用于相同的。

    string[] test = new string[2];
    test[0] = "Hello ";
    test[1] = "World!";
    string joinedString = test.Aggregate((prev, current) => prev + " " + current);
    

    【讨论】:

    【解决方案6】:
        string ConvertStringArrayToString(string[] array)
        {
            //
            // Concatenate all the elements into a StringBuilder.
            //
            StringBuilder strinbuilder = new StringBuilder();
            foreach (string value in array)
            {
                strinbuilder.Append(value);
                strinbuilder.Append(' ');
            }
            return strinbuilder.ToString();
        }
    

    【讨论】:

    • 这只是手动实现string.Join(" ", array)(除了你的添加尾随空格)。为什么不直接使用图书馆里的那个?
    • @davidg - Ashwini 可能是新的。学习使用现有工具并克服大学里“我必须自己做”的心态需要一些时间来适应。它对我有用。最终,人们想知道为什么他们的同事能够围绕他们编写代码,然后他们看到了代码库和重用的价值。
    • 无论我记得什么,我都试图提供帮助。如果有人有更好的解决方案,您可以随时发布。@jmort:我已经工作 4 年了...我不要有你说话的心态......任何人都不完美......多年来你学到的经验......希望你不要否认这个事实......
    • @Ashwini - 不是想冒犯你。只是根据我与不同工程师合作的经验回答@davidg 的问题。
    • 此外,连接的字符串将在其末尾附加一个额外的空格。所以这并不完全符合问题。
    【解决方案7】:

    在接受的答案中,String.Join 并不是其用法的最佳实践。应该使用 String.Concat,因为 OP 在第一项中包含一个尾随空格:“Hello”(而不是使用空分隔符)。

    但是,由于 OP 要求结果“Hello World!”,String.Join 仍然是合适的方法,但尾随空格应移至分隔符。

    // string[] test = new string[2];
    
    // test[0] = "Hello ";
    // test[1] = "World!";
    
    string[] test = { "Hello", "World" }; // Alternative array creation syntax 
    string result = String.Join(" ", test);
    

    【讨论】:

      【解决方案8】:

      我用这种方式让我的项目更快:

      RichTextBox rcbCatalyst = new RichTextBox()
      {
          Lines = arrayString
      };
      string text = rcbCatalyst.Text;
      rcbCatalyst.Dispose();
      
      return text;
      

      RichTextBox.Text 会自动将您的数组转换为多行字符串!

      【讨论】:

        【解决方案9】:

        像这样:

        string str= test[0]+test[1];
        

        你也可以使用循环:

        for(int i=0; i<2; i++)
            str += test[i];
        

        【讨论】:

          猜你喜欢
          • 2017-11-27
          • 2018-03-08
          • 1970-01-01
          • 2022-01-23
          • 2016-03-10
          • 1970-01-01
          相关资源
          最近更新 更多