string data = "0000062456"
如何讓我有這個字符串5個分裂:字符串分割基於字符數
part[0] = "00";
part[1] = "00";
part[2] = "06";
part[3] = "24";
part[4] = "56";
string data = "0000062456"
如何讓我有這個字符串5個分裂:字符串分割基於字符數
part[0] = "00";
part[1] = "00";
part[2] = "06";
part[3] = "24";
part[4] = "56";
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));
}
如果你有興趣在一個LINQ的解決方案:
IEnumerable<string> result = Enumerable
.Range(0, s.Length/2)
.Select(i => s.Substring(i * 2, 2));
在那裏你可以通過任何數量的你想更換2
。
請注意,這隻適用於可以被提供的子字符串長度整除的字符串(示例中爲2個字符)。在我的情況下,我還需要捕獲比其他人短的最後一個子字符串。改變很簡單,但如果沒有它,你會有比你想要的更少的字符串。 – 2011-03-17 03:41:35
對於一個字符串來說,這可能有點矯枉過正,因爲Substring
已經夠用了,但一般的問題是如何將一個集合拆分成給定大小的子組。圖書館MoreLinq
有這樣的功能:Batch
。
它也可以採取一個lambda表達式以直接子組轉換的第二個參數,所以一個解決方案可以是:
IEnumerable<string> parts = str.Batch(2, String.Concat);
上述工作對於.NET 4.0。在3.5的毗連需要一個數組,所以我們可以使用ToArray
或:
IEnumerable<string> parts = str.Batch(2, chars => new String(chars.ToArray()));
這種方法的一個很好的副作用是,它可以保護你免受邊緣的情況下 - 如預期它會工作,即使你的字符串的長度沒有按」在子串的長度上均勻分配。
請不要在標題(C#)中添加標籤。另外,C#沒有工具來拆分字符串 - 它是.NET Framework中的'System.String'類。這就是爲什麼我將.NET添加到您的標籤。 – 2010-05-24 19:35:54