如何从右到左逐个字符地读取字符?

时间:2018-11-12 19:12:05

标签: c# string

希望我能为您提供帮助,我有一个标签显示二进制值。

示例:"1000010101",此数据,我在读时用倒序表示。也就是说,从右到左开始,二进制数是动态的,因此它并不总是相同的。

直到现在这是我的主意,但这并没有给我任何价值

for (int i = lbl_conversion.Text.Length; i > 0; i--)
    {
        if (st[i] == 1)
        {
            MessageBox("1");
        }
        else
        {
            MessageBox("0");
        }

    }

我想要的是从左到右逐个字符地读取并知道它是"1"还是"0",然后进行比较,有人可以支持我获得该结果吗?

谢谢。

3 个答案:

答案 0 :(得分:2)

由于string是基于从零开始的,因此正确的for循环将是

   // Note "- 1" and ">=" 
   for (int i = lbl_conversion.Text.Length - 1; i >= 0; --i)
       if (st[i] == '1') //DONE: comparing with character, not integer
       {
           MessageBox("1");
       }
       else
       {
           MessageBox("0");
       }

或者您也可以Reverse字符串(在 Linq 的帮助下):

   // Let's read each character in reversed order
   foreach (char c in lbl_conversion.Text.Reverse())
       MessageBox(c.ToString()); 

答案 1 :(得分:0)

再增加一个(类似于之前发布的内容)

string s="10111011";
s.Reverse().ToList().ForEach(ch=>Console.WriteLine(ch=='1'?"A":"0"));

答案 2 :(得分:0)

当您需要从右到左读取字符串时,通常您知道必须读取的字符数。

我有这个功能。

 private string GetValue(string strValor, int lenght)
    {
        if (strValor.Length > lenght)
            return strValor.Substring(strValor.Length - lenght, lenght);
        return strValor;
    }
  • strValor:要读取的字符串。
  • 长度:要读取的字符数。

示例:GetValue(“ R6C5736423792”,10);返回“ 5736423792”