检查字符串中的字符是1还是0

时间:2012-03-24 09:01:19

标签: c#

我通过一个看起来像* 000000或* 110101的com端口接收一个字符串,或者介于两者之间的任何东西。每个字符代表我所拥有的PCB上的继电器状态,星号代表第一个继电器后的第一个字符,依此类推。我需要分别检查每个字符是1还是0,然后相应地将标签设置为ON或OFF。

我的代码是这样的:

if(char 1 == "1")
{

    label4.Text = "ON";    
}
else
{
    label4.Text = "OFF";
}

依此类推所有6个字符。但我不知道如何分隔每个角色。

谢谢!

4 个答案:

答案 0 :(得分:8)

听起来您想使用indexer on String来提取单个char

string text = "*110101"; // Wherever you get this from...
label4.Text = text[1] == '1' ? "ON" : "OFF";
label5.Text = text[2] == '1' ? "ON" : "OFF";
label6.Text = text[3] == '1' ? "ON" : "OFF";
label7.Text = text[4] == '1' ? "ON" : "OFF";
label8.Text = text[5] == '1' ? "ON" : "OFF";
label9.Text = text[6] == '1' ? "ON" : "OFF";

这假设您很高兴标签文本对于除“1”以外的任何值设置为“OFF”。 (如评论中所述,您使用 string 文字的双引号,但字符文字的单引号。)

注意我在这里使用条件运算符来简化代码:如果你想基于条件基本上在两个值(“ON”和“OFF”)之间进行选择,条件运算符比{更简单} {1}} / if。当然,不要过分,但值得熟悉。

但是,我还建议您将相关标签放入集合中。然后你可以使用类似的东西:

else

答案 1 :(得分:4)

你已经有了字符串吗?

您可以在字符串对象上使用索引器来访问字符。

示例:

string s = "110110";
if (s[3] == '0') label4.Text = "ON";

答案 2 :(得分:1)

您可以通过以下方式获取特定的字符:

  

string relaysStatus =“100110”;
  char c = relaysStatus.ElementAt(0);

或者你可以将所有转换为bool列表:

  

var relays = relaysStatus.Select(q => q =='1')。ToList();

答案 3 :(得分:1)

进一步移动,您可以创建将字符转换为On / Off字符串的扩展方法:

public static class CharExtensions
{
    public static string ToOnOff(this char ch)
    {
        return (ch == '1') ? "On" : "Off";
    }
}

之后你可以使用它(非常干净的代码):

label1.Text = input[0].ToOnOff(); 
label2.Text = input[1].ToOnOff();

更新:我认为检查“0' 0'和' 1'值。但这取决于你的输入字符串。

public static class CharExtensions
{
    public static string ToOffOn(this char ch)
    {
        switch (ch)
        {
            case '0' : return "Off";
            case '1': return "On";
            default:
                return ch.ToString(); // Or rise exception
        }            
    }
}