我正在尝试阻止将’
字符输入文本框。
问题是,如果您复制并粘贴’
字符,它将成为正确的单引号,这会在尝试将文本框保存到数据库时导致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");
}
是否还有一种方法可以让用户输入撇号但是阻止单右引号?
答案 0 :(得分:4)
不要阻止用户进入(特别是如果他们正在复制和粘贴),如果你真的需要摆脱它,你最好自己更换角色:
.pure-form-aligned .pure-group .pure-control-group {
margin: 0;
}
.pure-form.pure-form-aligned .pure-group .pure-control-group input {
display: inline-block;
position: relative;
margin: 0 0 -1px;
border-radius: 0;
top: -1px;
}
.pure-form-aligned .pure-group .pure-control-group:first-child input {
top: 1px;
border-radius: 4px 4px 0 0;
margin: 0;
}
.pure-form-aligned .pure-group .pure-control-group:last-child input {
top: -2px;
border-radius: 0 0 4px 4px;
margin: 0;
}
通过这种方式,您不会妨碍用户,但您仍会删除此字符。
然而,听起来你可能正在使用字符串连接来构建查询,这是一个更严重的问题!
答案 1 :(得分:0)
是否可以使用 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);
编辑:误解了原意。