[英]Check if a character in a string is a 1 or a 0
我通過一個看起來像這個* 000000或* 110101的com端口接收一個字符串,或者介於兩者之間的任何東西。 每個字符代表我所擁有的PCB上的繼電器狀態,星號代表第一個繼電器后的第一個字符,依此類推。 我需要分別檢查每個字符是1還是0,然后相應地將標簽設置為ON或OFF。
我的代碼是這樣的:
if(char 1 == "1")
{
label4.Text = "ON";
}
else
{
label4.Text = "OFF";
}
等等所有6個字符。 但我不知道如何分隔每個角色。
謝謝!
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”。 (如注釋中所述,您對字符串文字使用雙引號,但對字符文字使用單引號。)
注意我在這里使用條件運算符來簡化代碼:如果你想基於條件基本上在兩個值(“ON”和“OFF”)之間進行選擇,條件運算符比if
/ else
簡單得多。 當然,不要過度,但值得熟悉。
但是,我還建議您將相關標簽放入集合中。 然后你可以使用類似的東西:
for (int i = 0; i < 6; i++)
{
toggles[i].Text = text[i + 1] == '1' ? "ON" : "OFF";
}
你已經有了這個字符串?
您可以在字符串對象上使用索引器來訪問字符。
例:
string s = "110110";
if (s[3] == '0') label4.Text = "ON";
你可以得到具體的char:
string relaysStatus =“100110”;
char c = relaysStatus.ElementAt(0);
或者你可以將所有轉換為bool列表:
var relayys = relaysStatus.Select(q => q =='1')。ToList();
更進一步,您可以創建用於將字符轉換為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”和“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
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.