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;
}
}
}
}