string data = "0000062456"
如何将这个字符串分成5个部分,以便我有:
part[0] = "00";
part[1] = "00";
part[2] = "06";
part[3] = "24";
part[4] = "56";
答案 0 :(得分:7)
如果您对LINQ解决方案感兴趣:
IEnumerable<string> result = Enumerable
.Range(0, s.Length / 2)
.Select(i => s.Substring(i * 2, 2));
您可以将2
替换为您想要的任何数字。
答案 1 :(得分:4)
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 :(得分:2)
编辑:错误的语言
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));
}
答案 3 :(得分:0)
这可能对字符串有点过分,因为Substring
很方便,但一般的问题是如何将集合拆分为给定大小的子组。图书馆MoreLinq
具有以下功能:Batch
它还可以将lambda表达式作为直接转换子组的第二个参数,因此解决方案可以是:
IEnumerable<string> parts = str.Batch(2, String.Concat);
以上适用于.Net 4.0。在3.5 Concat需要一个数组,所以我们可以使用ToArray
或:
IEnumerable<string> parts = str.Batch(2, chars => new String(chars.ToArray()));
这种方法的一个很好的副作用是它可以保护你免受边缘情况的影响 - 即使字符串的长度在子字符串的长度上没有均匀分布,它也会按预期工作。