Как проверить что в конце стоят знаки и поставить запятую?
В калькуляторе я сделал запятую и она должна ставиться если в конце TextBox нет символов "+-*/,", только вот у меня не получается это сделать, так как он проверяет не всё сразу, а по одному символу и выполняет код дальше, из-за чего у меня ставится не одна запятая, а несколько. Как сделать так, чтобы всё это правильно выполнялось и ставилась только одна запятая?
private void comma_button_Click(object sender, EventArgs e)
{
char[] symbols = { '+', '-', '*', '/', ',' };
foreach (char c in symbols)
{
if (!equal_textbox.Text.EndsWith(c))
{
equal_textbox.Text += ",";
}
}
}
Ответы (2 шт):
Вы проходите по тексту столько раз, сколько символов в строке symbols. затем каждый раз проверяете, оканчивается ли строка на каждый из них, если нет, то ставится запятая.
Можно сделать проще, введите флаг, состояние которого изменяется при нажатии на кнопку с символом и проверяйте Его состояние. Флаг - глобальная приватная переменная типа bool (по умочанию false) сбрасывайте его как только нажали сброс или равно.
У вас неправильная логика. Вы идете по символам, сравнивая их с последним в строке.
Логика должна быть наоборот. Возьмите список символов и проверьте, встречается ли там последний символ входящей строки. Это работает:
private void comma_button_Click(object sender, EventArgs e)
{
char[] symbols = { '+', '-', '*', '/', ',' };
if(!symbols.Contains(equal_textbox.Text.Last()))
{
equal_textbox.Text += ",";
}
}