0

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

这怎么可能?

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

该代码似乎什么也没做。

4

5 回答 5

2

取一个 8 个字符的子字符串:

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

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

于 2012-11-05T17:35:20.837 回答
2

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

if (textBoxNewPassword.Text.Length > 8)
    textBoxNewPassword.Text = textBoxNewPassword.Text.SubString(0,8);
于 2012-11-05T17:35:32.240 回答
2

您使用 of 的精神Remove()并没有错,但是您忘记了 of 的第一个参数Remove(int, int)从零开始的。因此,当您在if语句中确定长度为 9 时(在大多数情况下TextBoxBase.TextLength仅覆盖TextBoxBase.String.Length- 但不是所有情况),当您位于第 8 位时,您正在处理字符串中的最后一个字符。Remove如果您使用过,您的代码会起作用反而:

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

但我想每个人都同意这个Substring解决方案更干净、更不脆弱。我只提到这一点,所以我们可以理解为什么它显然一开始什么也没做。

于 2012-11-05T17:56:16.763 回答
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 个字符的最后一个字符。

于 2012-11-05T17:39:54.587 回答
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;
    }

希望这有帮助。

于 2012-11-05T17:44:40.107 回答