如果字符串是> 8,我需要删除最后一个字符
这怎么可能?
private void textBoxNewPassword_TextChanged(object sender, EventArgs e)
{
if (textBoxNewPassword.TextLength == 9)
textBoxNewPassword.Text = textBoxNewPassword.Text.Remove((textBoxNewPassword.Text.Length - 1), 1);
}
代码似乎什么都不做。
答案 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;
}
希望得到这个帮助。