2014-02-07 39 views
0

我正在尋找一個C#代碼來將一個非常大的字符串(十六進制值)拆分爲8個字符塊(字符串數組),以便我可以逐個將它們變成整數。拆分一個非常大的字符串

十六進制值的字符串看起來像...000000030000000800000002...,我希望他們在000000030000000800000002

非常感謝!

+0

請注意,如果您的目標是獲取'int'列表並且不拆分字符串,那麼您最好使用[如何將字節數組轉換爲十六進制字符串]中提出的方法(http://stackoverflow.com/questions/ 311165/how-do-you-convert-byte-array-to-hexadecimal-string-and-反之亦然?rq = 1),以避免中間字符串的創建(甚至是重複問題中的懶惰創建)。 –

回答

0

我想這也許你在找什麼:

string sentence = "0000000100000002000000003"; 
string[] digits = Regex.Split(sentence, ".{8}"); 

結果:

digits[0] = "00000001" 
digits[1] = "00000002" 
digits[2] = "00000003" 
+0

+0:使用正則表達式+同時創建大量字符串......您需要添加正在使用的正則表達式的解釋 - 不要假設每個人都知道它的語法。 –

+0

@AlexeiLevenkov,通常我會同意你的觀點,並且幾乎總是會傾向於迭代方式而不是遞歸方式,或者在這種情況下是正則表達式方式。我仍然發佈這個場景,因爲其他人已經發布了迭代的'Substring'場景,所以我用這個階段來顯示這個場景的另一個實現。 –

1

這是一個很容易理解的版本:

string x = "0000000100000002000000003"; 

List<string> a = new List<string>(); 
for (int i = 0; i < x.Length; i += 8) 
{ 
    if((i + 8) < x.Length) 
     a.Add(x.Substring(i, 8)); 
    else 
     a.Add(x.Substring(i)); 
} 

結果:

a[0] = 00000001; 
a[1] = 00000002; 
a[2] = 00000003; 
0

您可以使用String.Split方法上的串像這樣:

string longString = "10101010,10101010,10101010" 
string[] Array; 
Array = longString.Split(","); 

要獲得逗號分隔字符串,你可以使用@薩米爾的正則表達式的想法。

+0

或者它可能是String.Split(longString,「,」); – vasilescur