如何防止 ’ 字符被输入文本框?
How to prevent ’ character being entered into a textbox?
我试图阻止 ’
字符被输入到文本框中。
问题是,如果您复制并粘贴 ’
字符,它会变成右单引号,这会在尝试将文本框保存到数据库时导致 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, '"'); // ” ”
这样,您就不会妨碍您的用户,而且您仍会删除此字符。
但是,听起来您可能正在使用字符串连接构建查询,这是一个更严重的问题!
是否可以仅使用 HttpUtility.HtmlEncode("A string with lot's of q'o'u't'e's that should work f'i'n'e'")
对字符串进行编码,从而导致 A string with lot's of q'o'u't'e's that should work f'i'n'e'
...
因为我不能评论除了我自己以外的任何人的答案,所以我必须这样做。
基于@Richard 的解决方案,它可以让其他人更容易阅读。
string someString = "This has a left quote: ’\nThis has a right quote: ‘";
string sanitized = someString.Replace(HttpUtility.HtmlDecode("‘"), "'")
.Replace(HttpUtility.HtmlDecode("’"), "'");
Console.WriteLine(sanitized);
编辑:误解了原意。
我试图阻止 ’
字符被输入到文本框中。
问题是,如果您复制并粘贴 ’
字符,它会变成右单引号,这会在尝试将文本框保存到数据库时导致 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, '"'); // ” ”
这样,您就不会妨碍您的用户,而且您仍会删除此字符。
但是,听起来您可能正在使用字符串连接构建查询,这是一个更严重的问题!
是否可以仅使用 HttpUtility.HtmlEncode("A string with lot's of q'o'u't'e's that should work f'i'n'e'")
对字符串进行编码,从而导致 A string with lot's of q'o'u't'e's that should work f'i'n'e'
...
因为我不能评论除了我自己以外的任何人的答案,所以我必须这样做。
基于@Richard 的解决方案,它可以让其他人更容易阅读。
string someString = "This has a left quote: ’\nThis has a right quote: ‘";
string sanitized = someString.Replace(HttpUtility.HtmlDecode("‘"), "'")
.Replace(HttpUtility.HtmlDecode("’"), "'");
Console.WriteLine(sanitized);
编辑:误解了原意。