我需要找出" AND"和/或" OR"存在于我的字符串中,如果存在,请用" WHERE"替换第一个匹配项。
实施例
AND item = 'blah'
并将替换为WHERE。
AND item = 'blah' OR product = 'foo'
并将替换为WHERE。
OR item = 'blah OR item = 'foo'
第一次出现的OR将替换为WHERE。
如果既不存在AND也不存在OR,则保持字符串不变。
如果字符串包含AND和OR,我有以下内容可用,但如果字符串仅包含AND,则它不起作用,因为y等于-1而x < y
总是为假。它一直在做我的头,加上它在这里的晚些时候,任何目前被控咖啡因的人的帮助将不胜感激。
private string ReplaceFilter(string filter)
{
int x = filter.IndexOf("AND");
int y = filter.IndexOf("OR");
string regEsc = (x != -1 && x < y) ? "AND" : "OR";
var regex = new Regex(Regex.Escape(regEsc));
return regex.Replace(filter, "WHERE", 1);
}
编辑为了响应@Luaan,我知道SQL注入并通过正确的方式添加参数采取了正确的步骤,但是我已经排除了那部分代码,因为它有与我的问题无关。在这个阶段,我只需要构建字符串。
干杯。
答案 0 :(得分:2)
使用正则表达式
AND|OR
搜索AND或OR然后使用正则表达式Replace
方法的this重载,如下所示,以确保只替换第一个:
var output = new Regex("AND|OR").Replace(input, "WHERE", 1);
答案 1 :(得分:1)
你可以匹配:
onicecandidate
它将在^(AND|OR)(.*)
的开头搜索AND
或OR
。您只需使用string
替换第一个捕获:
where
如果您不想仅在表达式以string input = "AND x=AND;";
string output = Regex.Replace(input, @"^(AND|OR)(.*)", "where $2");
或AND
开头的位置匹配,请忽略OR
:
^