我试图阻止 '
字符被输入到文本框中。
问题是,如果复制并粘贴 ’
字符,它会变成右单引号,这会在尝试将文本框保存到数据库时导致 sql 错误。
您可以在此处看到这一点 unicode lookup
如果您手动输入'
,那么它是一个撇号,并且该字符被接受。
问题是人们将电子邮件中的该字符复制并粘贴到文本框中,并将其转换为单引号。
Regex regex = new Regex(@"^[a-zA-Z0-9]*$");
Match match = regex.Match(txtName.Text);
if (!match.Success)
{
DisplayMsg("Name contains invalid character");
}
有没有办法仍然允许用户输入撇号但阻止单引号?
最佳答案
如果您确实需要删除该字符,您最好自己替换该字符,而不是阻止用户输入(尤其是当他们正在复制和粘贴时):
txtName.Text = txtName.Text
.Replace((char) 0x2018, '\'') // ‘ ‘
.Replace((char) 0x2019, '\'') // ’ ’
.Replace((char) 0x201C, '"') // “ “
.Replace((char) 0x201D, '"'); // ” ”
这样,您就不会妨碍用户,并且仍会删除该角色。
但是,听起来您可能正在使用字符串连接来构建查询,这是一个更严重的问题!
关于c# - 如何防止'字符被输入到文本框中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37704472/