【问题标题】:Convert string to array in without using Split function在不使用拆分函数的情况下将字符串转换为数组
【发布时间】:2010-01-08 02:05:31
【问题描述】:

有什么方法可以在不使用String.Split 函数的情况下将字符串 ("abcdef") 转换为包含其字符 (["a","b","c","d","e","f"]) 的字符串数组?

【问题讨论】:

    标签: c# arrays string


    【解决方案1】:

    所以你想要一组string,每个char

    string s = "abcdef";
    string[] a = s.Select(c => c.ToString()).ToArray();
    

    这是因为string 实现了IEnumerable<char>。所以Select(c => c.ToString())string 中的每个char 投影到string,表示charToArray 枚举投影并将结果转换为string 的数组。

    如果您使用的是旧版本的 C#:

    string s = "abcdef";
    string[] a = new string[s.Length];
    for(int i = 0; i < s.Length; i++) {
        a[i] = s[i].ToString();
    }
    

    【讨论】:

    • 实际上,尽管您的两个示例最终都会为您提供相同的字符串数组,但第二种(“旧”)方式要快得多。在将代码分解为本质上是第二组代码之前,LINQ 必须进行大量开销转换。尝试计时测试; LINQ 花费的时间是“普通”示例的两倍多。
    • 我怀疑你的计时方法有问题。
    【解决方案2】:

    是的。

    "abcdef".ToCharArray();
    

    【讨论】:

    • 他说的是string 数组,而不是char 数组。请注意,如果您可以在string 中的每个char 之间的空char 上使用String.Split,则结果将是string[]。这似乎是他正在寻求的行为。
    • 我的错。我冒昧地试图解释他问题的不正确语法,但我的解释显然是错误的。感谢您指出。
    【解决方案3】:

    您可以使用 linq 并执行以下操作:

    string value = "abcdef";
    string[] letters = value.Select(c => c.ToString()).ToArray();
    

    这会得到一个字符串数组而不是字符数组。

    【讨论】:

      【解决方案4】:

      你为什么不直接

      string value="abcd";
      
      value.ToCharArray();
      
      textbox1.Text=Convert.toString(value[0]);
      

      显示字符串的第一个字母;在这种情况下,这将是“a”。

      【讨论】:

        【解决方案5】:

        比上面的要大一点,但我没有看到任何简单的衬里。

        List<string> results = new List<string>; 
        
        foreach(Char c in "abcdef".ToCharArray())
        {
           results.add(c.ToString());
        }
        
        
        results.ToArray();  <-- done
        

        string.split 有什么问题???

        【讨论】:

          猜你喜欢
          • 2013-04-08
          • 1970-01-01
          • 2020-08-11
          • 2020-11-20
          • 1970-01-01
          • 2017-03-14
          • 1970-01-01
          • 2020-05-06
          • 1970-01-01
          相关资源
          最近更新 更多