首页 > 解决方案 > 如何从右到左逐个字符读取?

问题描述

我希望你能帮助我,我有一个显示二进制值的标签。

示例:"1000010101",这个数据,我正在用一个倒置的 for 来读取它。也就是说,从右到左,二进制数是动态的,所以它不会总是一样的。

到目前为止,这是我的想法,但它没有给我任何价值

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

    }

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

谢谢你。

标签: c#string

解决方案


由于strings 是从零开始的,因此正确的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");
       }

或者你可以只是字符串(在LinqReverse的帮助下):

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

推荐阅读