Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字符串拆分为特定n个大小的块_C#_Asp.net - Fatal编程技术网

C# 将字符串拆分为特定n个大小的块

C# 将字符串拆分为特定n个大小的块,c#,asp.net,C#,Asp.net,假设我有一根绳子: string str = "12386541"; 我怎样才能把这个字符串分成若干大小的块 十二, 我想先分两部分,然后再分两部分,然后再分四部分 string t1 = str.Substring(0, 2); string t2 = str.Substring(2, 2); string t3 = str.Substring(4, 4); 如果您想要一个通用方法将字符串分割成块,可以使用string.Substring编写它 下面是一个例子: public stat

假设我有一根绳子:

string str = "12386541"; 
我怎样才能把这个字符串分成若干大小的块

十二,

我想先分两部分,然后再分两部分,然后再分四部分

string t1 = str.Substring(0, 2);
string t2 = str.Substring(2, 2);
string t3 = str.Substring(4, 4);

如果您想要一个通用方法将字符串分割成块,可以使用string.Substring编写它

下面是一个例子:

public static IEnumerable<string> SplitIntoChunks(string s, params int[] lengths)
{
    int start = 0;

    foreach (var length in lengths)
    {
        if (start >= s.Length)
            yield return "";
        else if ((start + length) >= s.Length)
            yield return s.Substring(start);
        else
            yield return s.Substring(start, length);

        start += length;
    }
}
用于演示其使用的可编译控制台应用程序:

using System;
using System.Collections.Generic;

namespace ConsoleApplication2
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            string str = "12386541";
            var chunks = SplitIntoChunks(str, 2, 2, 4);

            Console.WriteLine(string.Join("|", chunks));
        }

        public static IEnumerable<string> SplitIntoChunks(string s, params int[] lengths)
        {
            int start = 0;

            foreach (var length in lengths)
            {
                if (start >= s.Length)
                    yield return "";
                else if ((start + length) >= s.Length)
                    yield return s.Substring(start);
                else
                    yield return s.Substring(start, length);

                start += length;
            }
        }
    }
}

你试过使用String.Substring吗?看看LINQ Take and Skip方法没有试过String.Substring我该怎么做?也许值得考虑将其作为一个扩展方法。
using System;
using System.Collections.Generic;

namespace ConsoleApplication2
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            string str = "12386541";
            var chunks = SplitIntoChunks(str, 2, 2, 4);

            Console.WriteLine(string.Join("|", chunks));
        }

        public static IEnumerable<string> SplitIntoChunks(string s, params int[] lengths)
        {
            int start = 0;

            foreach (var length in lengths)
            {
                if (start >= s.Length)
                    yield return "";
                else if ((start + length) >= s.Length)
                    yield return s.Substring(start);
                else
                    yield return s.Substring(start, length);

                start += length;
            }
        }
    }
}