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

时间:2016-05-20 07:14:55

标签: c# string textbox

 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);
    }

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

This is the input

and this is the output

输出应显示" 0"不是" 1"。 它始终显示"预览最后"而不是我在文本框中输入的最新内容。

4 个答案:

答案 0 :(得分:4)

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

尝试TextChanged事件。

答案 1 :(得分:0)

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

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

如果您知道文本的长度

,这可能会受到限制

答案 2 :(得分:0)

你怎么试试这个:

public void stringScan()
{

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

答案 3 :(得分:0)

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

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

如果您想要文本框中的最后一个字符,我建议Jeroen van Langen已经告知了TextChanged事件:

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. 
        }
    }