У меня есть функция, которая должна заменить любую строку, найденную в другой строке, критериями замены строки, начинающейся с @
, и ее нужно заменить только тогда, когда это целое слово.Регулярные выражения заменяют строку, содержащую символ @
Но код ниже не работает. Проблема заключается в характере, @
, потому что, если я использую другой символ в начале, например, 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.*, @[email protected] as @TeilId FROM @table_Software LEFT JOIN @table_Teile ON @[email protected] = @[email protected]_Id WHERE @[email protected] = 11"
stFrom
="@table_Software"
stTo
="tblSoftware"
Можете ли вы показать образцы строк, которые вы бы проходящими в переменных 'st',' stFrom' и 'stTo', как его написано в настоящее время, очень сложно понять, чего вы пытаетесь достичь. – Nico
Из вашего описания это не похоже на регулярное выражение - это правильная вещь для использования, у C# есть много встроенных способов проверки содержимого строки. – Sayse
Являются ли эти входы?string st = "aaaa @bbb ccc ddd eee fff"; строка stFrom = "bbb"; строка stTo = "XXX"; string ret = "aaaa XXX ccc ddd eee fff"; ? – Wolf5