代码之家  ›  专栏  ›  技术社区  ›  ilija veselica

基于字符数的字符串拆分

  •  4
  • ilija veselica  · 技术社区  · 14 年前
    string data = "0000062456"
    

    part[0] = "00";
    part[1] = "00";
    part[2] = "06";
    part[3] = "24";
    part[4] = "56";
    
    4 回复  |  直到 14 年前
        1
  •  4
  •   Oded    14 年前

    Substring(int32, int32) :

    part[0] = myString.Substring(0,2);
    part[1] = myString.Substring(2,2);
    part[2] = myString.Substring(4,2);
    part[3] = myString.Substring(6,2);
    part[4] = myString.Substring(8,2);
    

    当然,使用子字符串所需的索引可以轻松地将其转换为函数:

    string getFromIndex(int arrIndex, int length)
    {
       return myString.Substring(arrIndex * 2, length);
    }
    

    如果您真的想获得乐趣,您也可以创建一个扩展方法。

    public static string getFromIndex(this string str, int arrIndex, int length)
    {
       return str.Substring(arrIndex * 2, length);
    }
    
        2
  •  7
  •   Darin Dimitrov    14 年前

    IEnumerable<string> result = Enumerable
        .Range(0, s.Length / 2)
        .Select(i => s.Substring(i * 2, 2));
    

    你可以替换的地方 2 你想要多少都行。

        3
  •  2
  •   Hans Olsson    14 年前

    string str = "0000062456";
    List<string> parts = new List<string>();
    for (Int32 i = 0; i <= (str.Length / 2 - 1); i++) 
    {
        parts.Add(str.Substring(i * 2, 2));
    }
    
        4
  •  0
  •   Kobi    14 年前

    这可能有点过分了,因为 Substring 很方便,但一般的问题是如何将集合拆分为给定大小的子组。图书馆 MoreLinq 具有以下功能: Batch
    它还可以将lambda表达式作为第二个参数来直接转换子组,因此解决方案可以是:

    IEnumerable<string> parts = str.Batch(2, String.Concat);
    

    ToArray 或:

    IEnumerable<string> parts = str.Batch(2, chars => new String(chars.ToArray()));