【问题标题】:.NET / C# - Convert char[] to string.NET / C# - 将 char[] 转换为字符串
【发布时间】:2010-11-22 09:07:34
【问题描述】:

char[] 转换为字符串的正确方法是什么?

字符数组中的ToString() 方法不起作用。

【问题讨论】:

    标签: c# .net arrays string char


    【解决方案1】:

    这里有a constructor

    char[] chars = {'a', ' ', 's', 't', 'r', 'i', 'n', 'g'};
    string s = new string(chars);
    

    【讨论】:

    • 请注意new string(null) 产生String.Empty不是 null!如果你想保留null,你可以做一个扩展方法static string ToStringSafe(this char[] buf) { return buf == null ? null : new string(buf); }
    • @Skod:看到“新”表达式不可能返回对象实例以外的值,这对任何人来说都不足为奇。
    • @MattiVirkkunen:抛出异常也是合理的做法。这就是我猜测的将 null 传递给字符串构造函数的行为。
    【解决方案2】:

    使用接受char[]的字符串构造函数

    char[] c = ...;
    string s = new string(c);
    

    【讨论】:

    • 如果你能快三分钟,你就会在问题被问到之前就回答好了!
    • 忘记分钟。只需 17 秒。我上面的答案是我在该网站上获得第二高投票的答案。事实上,我现在在这里是因为有人刚刚再次投票,差不多 10 年后。这两个答案并没有什么不同......但我的发布速度快了 17 秒,这意味着 500 票的差异:/
    【解决方案3】:
    char[] characters;
    ...
    string s = new string(characters);
    

    【讨论】:

      【解决方案4】:

      另一种方式:

      char[] chars = {'a', ' ', 's', 't', 'r', 'i', 'n', 'g'};
      string s = string.Join("", chars);
      //we get "a string"
      // or for fun:
      string s = string.Join("_", chars);
      //we get "a_ _s_t_r_i_n_g"
      

      【讨论】:

      • string.Join 只接受string[] 而不是char[]
      • @sky91 不仅可以使用 String.Join 方法,任何 T[] 作为参数,都会调用 T.ToString()
      • 那么你应该写string.Join<char>("_", chars)而不是string.Join("_", chars)
      • 编译器会自动执行它,因为 chars 类型在编译时是已知的。
      • 这很奇怪,因为如果我没有定义类型 会出现编译错误
      【解决方案5】:
      String mystring = new String(mychararray);
      

      【讨论】:

        【解决方案6】:

        使用接受 chararray 作为参数的字符串构造函数,数组的起始位置和长度。语法如下:

        string charToString = new string(CharArray, 0, CharArray.Count());
        

        【讨论】:

        • 我想这就是我想要的。但我不知道任何名为 CharArray 的类。你的意思可能是这样的:char[] charArray = new char[5] { 'a', 'b', 'c', '\0', '\0' }; string charsAsString = new string(charArray, 0, 3); // only want part of array.
        • CharArray 不是类,只是 char[] 类型的变量
        【解决方案7】:

        另一种选择

        char[] c = { 'R', 'o', 'c', 'k', '-', '&', '-', 'R', 'o', 'l', 'l' };
        string s = String.Concat( c );
        
        Debug.Assert( s.Equals( "Rock-&-Roll" ) );
        

        【讨论】:

          猜你喜欢
          • 2018-03-27
          • 2013-05-13
          • 2012-01-16
          • 2018-09-02
          • 1970-01-01
          • 1970-01-01
          • 2019-04-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多