【问题标题】:Split string into string array of single characters将字符串拆分为单个字符的字符串数组
【发布时间】:2012-04-08 11:17:23
【问题描述】:

我想做一些简单的事情,比如把 "this is a test" 变成

new string[] {"t","h","i","s"," ","i","s"," ","a"," ","t","e","s","t"}

我真的需要做类似的事情吗

test = "this is a test".Select(x => x.ToString()).ToArray();

编辑:澄清一下,我不想要一个 char 数组,理想情况下我想要一个字符串数组。除了我认为有更简单的方法之外,我真的没有看到上面的代码有什么问题。

【问题讨论】:

  • 你真的希望每个字符都作为一个字符串吗?
  • 你的代码var test = "this is a test".Select(x => x.ToString()).ToArray();有什么问题?

标签: c# string split


【解决方案1】:

我相信这就是您要找的:

char[] characters = "this is a test".ToCharArray();

【讨论】:

  • 虽然这不是我要求的,但我想我开始意识到我提出的要求确实没有理由。
  • @Walkerneo 你真正想要什么?一个 -1?
  • @Walkerneo 这就是我回答这个问题的原因。我想不出你想要一个单字符串数组的原因。不过不用担心。
  • @L.B,对不起,我更新了帖子。没有意识到我需要什么。
  • @BrandonMoretz 我刚刚投了赞成票,以便您的代表从一个非常好的整数(5000)改变。感谢您中肯的回答。
【解决方案2】:

C# 中的字符串已经有一个字符索引器

string test = "this is a test";
Console.WriteLine(test[0]);

还有……

if(test[0] == 't')
  Console.WriteLine("The first letter is 't'");

这也有效...

Console.WriteLine("this is a test"[0]);

还有这个……

foreach (char c in "this is a test")
  Console.WriteLine(c);

编辑

我注意到关于 char[] 数组的问题已更新。如果你必须有一个 string[] 数组,下面是在 c# 中在每个字符处拆分字符串的方法:

string[] test = Regex.Split("this is a test", string.Empty);

foreach (string s in test)
{
  Console.WriteLine(s);
}

【讨论】:

  • +1 表示我在发布答案时错过了一个明显的点。呃。我怎么没想到呢?
  • 他们有一个char 索引器,他们实现了IEnumerable<char>,但他们实际上不是char[]IList<char>
  • 真的。它们是字符串类型,但重点是开发人员不需要使用 ToCharArray() 或任何类型的转换为 string[] 来访问单个字符。
  • 先生。 @CSharper 我现在走在同一条路上。它对我有用。
  • 有趣的是 Regex.Split 将字符串视为在第一个字符之前和最后一个字符之后有一个空字符串
【解决方案3】:

简单!!
一行:

 var res = test.Select(x => new string(x, 1)).ToArray();

【讨论】:

    【解决方案4】:

    试试这个:

    var charArray = "this is a test".ToCharArray().Select(c=>c.ToString());
    

    【讨论】:

    • ToCharArray() 似乎是多余的。另请注意,您得到的是System.Linq.Enumerable+WhereSelectArrayIterator`2[System.Char,System.String] 而不是System.String[]
    【解决方案5】:

    您可以只使用String.ToCharArray(),然后在代码中将每个字符视为字符串。

    这是一个例子:

        foreach (char c in s.ToCharArray())
            Debug.Log("one character ... " +c);
    

    【讨论】:

      【解决方案6】:

      您很可能正在寻找ToCharArray() 方法。但是,如您在帖子中所述,如果需要 string[],您将需要做更多的工作。

          string str = "this is a test.";
          char[] charArray = str.ToCharArray();
          string[] strArray = str.Select(x => x.ToString()).ToArray();
      

      编辑:如果你担心转换的简洁性,我建议你把它变成一个扩展方法。

      public static class StringExtensions
      {
          public static string[] ToStringArray(this string s)
          {
              if (string.IsNullOrEmpty(s))
                  return null;
      
              return s.Select(x => x.ToString()).ToArray();
          }
      } 
      

      【讨论】:

        【解决方案7】:

        将消息转换为字符数组,然后使用for循环将其更改为字符串

        string message = "This Is A Test";
        string[] result = new string[message.Length];
        char[] temp = new char[message.Length];
        
        temp = message.ToCharArray();
        
        for (int i = 0; i < message.Length - 1; i++)
        {
             result[i] = Convert.ToString(temp[i]);
        }
        

        【讨论】:

          【解决方案8】:
          string input = "this is a test";
          string[] afterSplit = input.Split();
          
          foreach (var word in afterSplit)
              Console.WriteLine(word);
          

          结果:

          this
          is
          a
          test
          

          【讨论】:

          • 再解释一下就更好了。谢谢!
          • 这似乎不符合原题的“单个字符的字符串数组”要求。
          • 这会将其拆分为单词,而不是单个字符
          猜你喜欢
          • 2012-02-22
          • 2016-04-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-10
          相关资源
          最近更新 更多