string data = "0000062456"
如何将这个字符串分成5段,使得我有以下内容:
part[0] = "00";
part[1] = "00";
part[2] = "06";
part[3] = "24";
part[4] = "56";
如果您有兴趣了解LINQ解决方案:
IEnumerable<string> result = Enumerable
.Range(0, s.Length / 2)
.Select(i => s.Substring(i * 2, 2));
您可以将2
替换为任何您想要的数字。
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);
}
编辑:语言错误
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));
}
对于一个字符串来说,这可能有点过度了,因为Substring
已经足够方便了,但是一般的问题是如何将集合分成给定大小的子组。库MoreLinq
有这样一个函数:Batch
。
它还可以将lambda表达式作为第二个参数直接转换子组,所以解决方案可以是:
IEnumerable<string> parts = str.Batch(2, String.Concat);
ToArray
或:IEnumerable<string> parts = str.Batch(2, chars => new String(chars.ToArray()));
System.String
类。这就是为什么我在您的标签中添加了 .NET 的原因。 - John Saunders