[英]Convert all characters of a string to uppercase, except for some specific characters
我试图防止某些字符变为大写,而所有其他字符必须变为大写。
例如,如果我在文本框中写了一些东西,它会自动将所有字符写成大写,但是每次我输入字母“ k”时,它都必须用小写。
有谁知道实现这一目标的方法吗?
private void textBox3_TextChanged(object sender, EventArgs e)
{
// Navn/Name Text Box
}
在您的textBox3_TextChanged
事件处理程序中,您可以简单地“更正”文本并将其重新设置。
您必须记住光标的位置(和选择),以便用户在键入时不会被打扰:
private void textBox3_TextChanged(object sender, EventArgs e)
{
int start = textBox3.SelectionStart;
int length = textBox3.SelectionLength;
textBox3.Text = textBox3.Text.ToUpper().Replace("K", "k");
textBox3.SelectionStart = start;
textBox3.SelectionLength = length;
}
注意:这适用于Windows.Forms。 我猜对于wpf或asp或其他ui框架,带有游标处理的部分将有所不同。
这里一种方法
private void textBox3_TextChanged(object sender, EventArgs e)
{
textBox3.Text = new string(textBox3.Text.Select(x => x == 'k' || x == 'K' ? 'k' : char.ToUpper(x)).ToArray());
}
最后,保存新字符串,然后将插入符号返回到其位置。
private static bool CalculateConditionForLowerCase(string stringLetter) { return stringLetter.ToLower() == "k"; } private void textBox1_TextChanged(object sender, EventArgs e) { if (string.IsNullOrEmpty(textBox1.Text)) { return; } var caretPosition = textBox1.SelectionStart; var sb = new StringBuilder(); foreach (var letter in textBox1.Text) { var stringLetter = letter.ToString(); sb.Append(CalculateConditionForLowerCase(stringLetter) ? stringLetter.ToLower() : stringLetter.ToUpper()); } textBox1.Text = sb.ToString(); textBox1.SelectionStart = caretPosition; }
如果不想让用户输入无效的输入,则可以使用TextChanged事件(其他答案)或处理KeyDown和KeyUp事件。 检查此链接以了解其他方法。
https://msdn.microsoft.com/zh-CN/library/ms171537(v=vs.110).aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.