文本框文本删除最后一个字符

时间:2012-11-05 17:34:25

标签: c# .net

如果字符串是> 8,我需要删除最后一个字符

这怎么可能?

private void textBoxNewPassword_TextChanged(object sender, EventArgs e)
{
    if (textBoxNewPassword.TextLength == 9)
        textBoxNewPassword.Text = textBoxNewPassword.Text.Remove((textBoxNewPassword.Text.Length - 1), 1);
}

代码似乎什么都不做。

5 个答案:

答案 0 :(得分:2)

使用8个字符的子字符串:

textBoxNewPassword.Text = textBoxNewPassword.Text.Substring(0, 8);

更好的是,将MaxLength上的TextBox属性设置为8。

答案 1 :(得分:2)

使用String.Substring Method (Int32, Int32),其中第一个参数是起始索引,第二个参数是字符数。此外,如果您需要检查长度是否大于8,请执行:

if (textBoxNewPassword.Text.Length > 8)
    textBoxNewPassword.Text = textBoxNewPassword.Text.SubString(0,8);

答案 2 :(得分:2)

您使用Remove()的精神并非不恰当,但您忘记了Remove(int, int)的第一个参数是zero-based。因此,当您在if语句中确定长度为9(TextBoxBase.TextLength只覆盖TextBoxBase.String.Length时,大多数情况(但不是全部)情况下,您正在寻找您的最后一个字符Remove在第8位时的字符串。如果你改为使用,你的代码就会起作用:

textBoxNewPassword.Text = textBoxNewPassword.Text.Remove((textBoxNewPassword.Text.Length - 2), 1);

但我认为每个人都同意Substring解决方案更清洁,更脆弱。我只提到这一点,所以我们可以理解为什么它首先显然什么都不做。

答案 3 :(得分:1)

完全按照你的问题提出要求

    private void textBoxNewPassword_TextChanged(object sender, EventArgs e)
    {
        if (textBoxNewPassword.Text.Length > 8)
        {
            textBoxNewPassword.Text = textBoxNewPassword.Text.Substring(0, textBoxNewPassword.Text.Length - 1);
        }
    }

你说你只想删除最后一个8个字符以上的字符。

答案 4 :(得分:0)

这是一种可能的通用解决方案。

static void Main(string[] args)
    {
        string text = "The max length is seven".RemoveChars(7);

    }

    public static string RemoveChars(this string text, int length)
    {
        if (!String.IsNullOrEmpty(text) && text.Length > length)
            text = text.Remove(length, text.Length - length);
        return text;
    }

希望得到这个帮助。