遇到一个问题
输入一串数字,长度为偶数,需要将之分割(从左到右),成为2个数字一组的数组并且每个值前面加上0x
比如:输入 12345678 变为:0x12,0x34,0x56,0x78 
请教! 

解决方案 »

  1.   


     string abc = "12345678";
                string[] cba = new string[abc.Length / 2];
                for (int i = 0; i < abc.Length / 2; i++)
                {
                    cba[i] = "0x" + abc.Substring(i * 2, 2);
                }            string rep = "";
                for (int i = 0; i < cba.Length; i++)
                {
                    rep = rep + cba[i] + " ";
                }
                MessageBox.Show(rep);
      

  2.   

    见代码:pubic static sring[] SplitEvenSting(string text)
     {
       
       string[] strs = new string[text.Length/2];
       for(int i=0; i<text.Length; i+=2)
         strs[i] = "0x" + text[i].ToString() + text[i+1].ToString();
       return strs;
     }
      

  3.   

    一句话版本:string result = Regex.Replace("12345678", @"\d{2}", m => "0x" + m.Value+(m.NextMatch().Success ? "," : ""));
      

  4.   

    还是一句话版本,不过不使用正则委托,不使用lambda了。string result = Regex.Replace("12345678", @"\d{2}", "0x$&,").TrimEnd(",".ToCharArray());
      

  5.   

    pubic static sring[] SplitEvenSting(string text)
     {
       
       string[] strs = new string[text.Length/2];
       for(int i=0; i<text.Length; i+=2)
         strs[i] = "0x" + text[i].ToString() + text[i+1].ToString();
       return strs;
     }
      

  6.   

    @lz:
    由于时间仓促,代码中存在小错误,见谅:
    string[] strs = new string[text.Length/2];
       for(int i=0 , size =0; i< strs.Length; i++ , size += 2)
         strs[i] = "0x" + text[size].ToString() + text[size+1].ToString();
    其他部分不变!
      

  7.   

    好吧,还是一句话版本,不用正则int i=0;
    "12345678".GroupBy(n => i++ / 2).ToList().ForEach(g => Console.WriteLine("0x" + new string(g.ToArray())));