正则表达式和字符串,我如何修复'在一个字符串?

时间:2014-09-26 18:38:50

标签: regex string

参考:String issues. Format "First Last" to format "Last, First" with a twist

我的功能很适合mos名字。但是,我坚持使用'在他们中间,即:O' Shane。我循环一个数据集,将名称传递给函数来修复它,然后返回固定名称。但是,字符串中有一个'在它中,它弄乱了SQL语句。

以下是相关代码:

 strSql = ("update tbl set Name=" & "'" & strNewName & "'" & " where ID= " & "'" & ID & "'")

strNewName = NameFix(strName)

 Public Function NameFix(ByVal strOriginalName As String) As String
Dim regex As New Regex("(?:(?:mr\.|miss|mrs|ms|by)\s+)?(\S+).*(?<=\s)(\S+)$", RegexOptions.IgnoreCase)
        Dim strNewName As String = regex.Replace(strOriginalName, "$2, $1")
        Return strNewName

我如何通过&#39;在一个名字?

TIA!

2 个答案:

答案 0 :(得分:2)

使用SQL参数 - 不要将用户输入的值放在永远的SQL语句中。这是一个很大的安全漏洞,称为SQL注入。

虽然您可以用'替换每个''以逃避引用,但这仍然是一种不好的做法。使用SQL参数将允许服务器优化和缓存查询计划,以便使用不同的参数进行重用。

您的查询将如下所示:

UPDATE tbl SET Name = @newName WHERE ID = @id

如果使用ADO.NET,则将值添加到SqlCommand.Parameters集合。

答案 1 :(得分:0)

'字符的转义序列是添加另一个',因此请'替换''