2014-12-19 165 views
-6

我想輸入一系列十六進制數字到文本框中,當用戶點擊按鈕時用逗號分隔每個字節。 AAFFBCEE成爲AA,FF,BC,EE(最後一個字節沒有逗號)。我怎樣才能將字符串值轉換爲這種格式?將十六進制字符串轉換爲逗號分隔的十六進制字符串c#

+0

請使用谷歌和搜索MAC地址和十六進制格式。 SO充滿了問題,並且原因也是十六進制格式的答案。 – Paebbels

+0

要將字符串拆分爲固定大小的塊,請參見[this](http://stackoverflow.com/questions/1450774/splitting-a-string-into-chunks-of-a-certain-size)。要添加逗號並生成新字符串,請使用此'String.Join(「,」,stringChunks.ToArray())'。 – Dialecticus

回答

1
string temp = "aaff4455"; 
    string temp2 = ""; 
    int size = temp.Length; 

    for (int i = 0; i < size; i += 2) 
    { 
     temp2 += temp.Substring(i, 2); 
     if ((i+2) < size) 
      temp2 += ","; 
    } 
+0

在循環中使用字符串連接通常是不好的形式。只要輸入的字符串很短,這可能沒問題。但除此之外,你應該使用['StringBuilder.Append(string,int,int)'](http://msdn.microsoft.com/en-us/library/kc12ydtf(v = vs.110).aspx)反而過載。 –

+0

我們正在討論的TextBox不是流...謝謝你-1 – LPs

+0

不客氣。一個'TextBox'可以容易地包含足夠的文本,因此在這裏使用錯誤的實現是一個問題。無論如何,做正確的事情並不比做錯更困難,那麼爲什麼要增加一個錯誤的例子來說明如何在建立一個字符串時提供一個好的例子呢?如果你不想要反對票,寫一個_良好的答案。這很容易,我已經告訴過你了。你所要做的就是編輯你給的答案。 –

0

爲什麼不使用1-liner?

var str = "AABBCCDD"; 
var result = ""; 

str.ToCharArray() 
     .Select((c, i) => new { i, c }) 
     .ToList() 
     .ForEach(c => result += (c.i > 0 && c.i % 2 == 0) ? "," + c.c : c.c.ToString()); 

(我還在學習LINQ的,所以要很好!)

+0

這是一個非常好的解決方案! – LPs

+0

Aww一個柔軟?我知道這不是完美的,但一個投票看起來很苛刻:S – ne1410s

+0

我推動了你;) – LPs

相關問題