用单引号括起特定的单词

本文关键字:单词 单引号 | 更新日期: 2023-09-27 18:12:55

我在寻找一个简单的解决方案,用引号在字符串中引用文本。

例如:

DATEDIFF(Minutes, Lead.WhenCreated, @Today)

需要更新为

DATEDIFF(Minutes, Lead.WhenCreated, '@Today')

如果源字符串已经有标记的引号,那么不应该做任何更改。字符串中可能有多个令牌,我不知道令牌的值是什么-只说它将以@字符开始。

我的环境是Visual Studio c# 2008。

希望有人能帮忙。

谢谢。

用单引号括起特定的单词

resultString = Regex.Replace(subjectString, @"(@'b'w+'b)", "'$1'");

你可以用这个。它将查找所有以@开头的单词,并在它们后面加上引号。

编辑:

resultString = Regex.Replace(subjectString, @"((?<!')@'b'w+'b)", "'$1'");

模式:

(?<!')(@'w+)

替换:

'$1'

看起来就像你在用c#代码构建一个SQL语句,然后自己替换参数。你最好使用这个方法…

DataReader rdr;
using (SqlConnection con = new SqlConnection(MY_CONNECTIONSTRING)
{
    con.Open();
    string sql = "SELECT DATEDIFF(Minutes, Lead.WhenCreated, @Today) FROM tbl";
    using (SqlCommand cmd = new SqlCommand(sql, con))
    {
         cmd.Parameters.AddWithValue("@Today", datDateValue);
         rdr = cmd.ExecuteReader();
    }
}

这种方法对于恶意SQL注入更安全。

这是一篇在c#中解决这个问题的文章