【发布时间】:2015-06-29 06:17:45
【问题描述】:
我有一个函数应该用要替换的字符串以@ 开头的条件替换在另一个字符串中找到的任何字符串,并且只有当它是一个完整的单词时才必须替换它。
但是下面的代码不起作用。问题在于字符@,因为如果我在开头使用另一个字符,例如 X,它会起作用。然而,即使将@ 符号放在方括号之间也无济于事。
public static string DB_Replace_Str(string st, string stFrom, string stTo)
{
stFrom = stFrom.Replace("@", "[@]");//this does not help
string pattern = @"\b" + stFrom + @"\b";
return Regex.Replace(st, pattern, stTo);
}
我在这里发布了一些示例字符串:
-
st="SELECT @table_Software.*, @table_Teile.@Id as @TeilId FROM @table_Software LEFT JOIN @table_Teile ON @table_Software.@Id = @table_Teile.@Software_Id WHERE @table_Software.@Id = 11" -
stFrom="@table_Software" -
stTo="tblSoftware"
【问题讨论】:
-
您能否展示您将在变量
st、stFrom和stTo中传递的字符串示例,因为它目前编写的内容很难准确理解您要尝试的内容达到。 -
从您的描述看来,regex 似乎不适合使用,C# 有很多(内置)方法来检查字符串包含的内容。
-
这些是输入吗? string st = "aaaa @bbb ccc ddd eee fff";字符串 stFrom = "bbb";字符串 stTo = "XXX";字符串 ret = "aaaa XXX ccc ddd eee fff"; ?
-
我正在尝试发布字符串,但在 stackoverflow 中出现错误:“只有一个额外的 @user 等....”stackoverflow 也被 @ 字符混淆
-
我不想破坏您的研究,但有一种方法可以“返回一个新字符串,其中当前实例中出现的所有指定字符串都替换为另一个指定字符串。”请阅读How to Ask 并尝试花时间整理您的问题。