【发布时间】:2015-01-17 20:04:13
【问题描述】:
我正在 TextChanged 属性中测试以下代码,以仅允许 textBox 中的 HEX 值,它工作得很好,它还删除了与 HEX 模式不匹配的粘贴字符串并将小写转换为大写,这只是我需要什么:
Regex nonhex = new Regex("[^0-9,a-f,A-F]");
int caret = textBox1.SelectionStart - textBox1.Text.Length;
textBox1.Text = nonhex.Replace(textBox1.Text, "").ToUpper();
textBox1.SelectionStart = caret + textBox1.Text.Length;
如果我尝试添加前缀,上面的代码只会删除它。修改代码以允许添加永久前缀(例如 0x、h、$)以使我只使用正则表达式和 TextChnaged 属性的最佳方法是什么,是否有可能?我还需要能够指定 HEX 值的最大长度,例如 PID 和 VID HID 设备的 4 位,因为我可能会在一些需要或多或少的十六进制数字的不同项目中使用它。
我在论坛中查找了类似的解决方案,但大多数人使用多个事件并且几乎无法实现这四行可以做到的事情。顺便说一句,使用 RegEx 并不是犯罪行为。
谢谢
【问题讨论】:
标签: c# regex textbox hex prefix