【问题标题】:C# Splitting a string [duplicate]C#拆分字符串[重复]
【发布时间】:2013-11-13 21:06:47
【问题描述】:

我有一个问题。我有一个字符串"3d8sAdTd6c" 我需要它来拆分它,所以结论是:

3d
8s
Ad
Td
6c

如果您能告诉我该怎么做,我将不胜感激。

【问题讨论】:

  • 你做过研究吗?你真的认为这是一个从未有人问过的独特问题吗?
  • 这里有一个非常有用的实现:stackoverflow.com/a/1450797/328193
  • -1 表示零研究工作。

标签: c# string split


【解决方案1】:

也许:

string[] result = str
    .Select((c, index ) => new{ c, index })
    .GroupBy(x => x.index / 2)
    .Select(xg => string.Join("", xg.Select(x => x.c)))
    .ToArray();

这对每隔一个字符进行分组,并使用string.Join 将它们连接成一个字符串。

【讨论】:

  • 现在这很漂亮,我的朋友!
  • 除此之外,我更喜欢这里的正则表达式方法:stackoverflow.com/questions/9932096/… 简而言之:string.Join(Environment.NewLine, System.Text.RegularExpressions.Regex.Split(myString, "(?
【解决方案2】:

像下面这样的东西应该适用于循环。

string str = "3d8sAdTd6c";
string newstr = "";

    int size = 2;
    int stringLength = str.Length;
    for (int i = 0; i < stringLength ; i += size)
    {
        if (i + size > stringLength) size = stringLength  - i;
        newstr = newstr + str.Substring(i, size) + "\r\n";

    }
    Console.WriteLine(newstr);

【讨论】:

    【解决方案3】:
    string input = "3d8sAdTd6c";
    for (int i = 0; i < input.Length; i+=2) {
        Console.WriteLine(input.Substring(i,2));
    }
    

    【讨论】:

      【解决方案4】:

      将任何字符串分成两个字符对:

      /// <summary>
      /// Split a string into pairs of two characters.
      /// </summary>
      /// <param name="str">The string to split.</param>
      /// <returns>An enumerable sequence of pairs of characters.</returns>
      /// <remarks>
      /// When the length of the string is not a multiple of two,
      /// the final character is returned on its own.
      /// </remarks>
      public static IEnumerable<string> SplitIntoPairs(string str)
      {
          if (str == null) throw new ArgumentNullException("str");
      
          int i = 0;
          for (; i + 1 < str.Length; i += 2)
          {
              yield return str.Substring(i, 2);
          }
          if (i < str.Length)
              yield return str.Substring(str.Length - 1);
      }
      

      用法:

      var pairs = SplitIntoPairs("3d8sAdTd6c");
      

      结果:

      3d 8s 广告 时差 6c

      【讨论】:

      • 我喜欢函数的文档与函数本身一样长。
      • @gunr2171 一旦你开始使用这个函数,你就看不到它的代码。文档是你拥有的所有(它显示在 IntelliSense 中),所以我总是在编写函数的那一刻编写文档。
      猜你喜欢
      • 2023-03-24
      • 1970-01-01
      • 2012-09-18
      • 2021-04-01
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-03
      相关资源
      最近更新 更多