c# TextBox 如何获取字符串的最后一个字母?

c# TextBox how to get the last letter of a string?

 private void inputBox_KeyPress(object sender, KeyPressEventArgs e)
    {
        stringScan();
        var regex1 = new Regex(@"[^+^\-^\b^\r\n]");
        var regex2 = new Regex(@"[^0-9^+^\-^/^*^#^\b^\r\n]");

        if (ListBox.Items.Count == 0 && string.IsNullOrWhiteSpace(inputBox.Text))
        {
            if (regex1.IsMatch(e.KeyChar.ToString()))
            {
                e.Handled = true;
                toolTip1.Show("Plus or minus first then followed by numbers.", inputBox, 1500);

            }
        }
        else
        {
            if (regex2.IsMatch(e.KeyChar.ToString()))
            {
               e.Handled = true;  
            }
        }

    }

    public void stringScan()
    {
        char last_char = inputBox.ToString()[inputBox.ToString().Length - 1];
        Console.WriteLine(last_char);
    }

如何获取字符串的最后一个 letter/number?。真的很难解释所以我会展示一些截图。

输出应该显示“0”而不是“1”。 它总是显示 "previews last" 而不是我在文本框中输入的最新一个。

每次更改文本框内容时都会执行文本框键值更改

因此,对于您输入的每个值,您都将调用字符串扫描

如果你知道文本的长度,这可以被限制

请记住,引发事件 inputBox_KeyPress 时,尚未添加键入的密钥。另外,不要为此使用正则表达式。它会过于复杂。

尝试 TextChanged 活动。

你试试这个怎么样:

public void stringScan()
{

    String last_char = inputBox.ToString();
    Console.WriteLine(last_char[last_char.Length-1]);
}

如果你想要最后输入的字符,我建议:

private void inputBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
            Console.WriteLine(e.Text);
}

如果你想要文本框中的最后一个字符,我建议使用 TextChanged 事件,正如 Jeroen van Langen 所说:

private void inputBox_TextChanged(object sender, TextChangedEventArgs e)
{
    string inputString = ((TextBox)sender).Text;
    char lastChar = inputString.Last();
    Console.WriteLine(lastChar);
}

希望代码示例对您有所帮助

编辑: 现在我知道你可能想从文本框中获取整数,如果是这样,Get integer from Textbox 可以帮助你,代码示例:

 private void inputBox_TextChanged(object sender, TextChangedEventArgs e)
    {
        string inputString = ((TextBox)sender).Text;

        int valueFromTextBox;
        if (int.TryParse(inputString, out valueFromTextBox))
        {
            //parsing successful 
        }
        else
        {
            //parsing failed. 
        }
    }