C# 如何从特定单词中删除部分字符串?
下面是我的sql查询:C# 如何从特定单词中删除部分字符串?,c#,sql,sql-server,C#,Sql,Sql Server,下面是我的sql查询: select * from Table where col1 = @param1 and col2 = @param2 现在我想删除where子句中的所有内容,因此预期输出如下所示: select * from Table; 代码: string str = "select * from Table where col1 = @param1 and col2 = @param2"; var str = sqlQuery.Replace("where", ""); /
select * from Table where col1 = @param1 and col2 = @param2
现在我想删除where子句中的所有内容,因此预期输出如下所示:
select * from Table;
代码:
string str = "select * from Table where col1 = @param1 and col2 = @param2";
var str = sqlQuery.Replace("where", ""); // select * from Table col1 = @param1 and col2 = @param2
一种方法是使用
IndexOf
和Substring
var sql = "select* from Table where col1 = @param1 and col2 = @param2";
var index = sql.IndexOf("where", StringComparison.OrdinalIgnoreCase);
var newSql = sql.Substring(0, index);
您还可以使用Trim
删除末尾的空白。这看起来像
var newSql = sql.Substring(0, index).Trim();
在@Mighty Badaboom提供的答案的帮助下,我创建了以下扩展方法
static public string Foo(this string original,string wordToFind, StringComparison stringComparision = StringComparison.OrdinalIgnoreCase)
{
var index = original.IndexOf("where", stringComparision);
return original.Substring(0, index).Trim();
}
string newSql = Foo(str, "where", StringComparison.OrdinalIgnoreCase);
查看字符串典型作业问题的
IndexOf
和SubString
方法:将StringComparison.OrdinalIgnoreCase
添加到IndexOf
方法中。@MightyBadaboom它应该是OrdinalIgnoreCase
,因为SQL不区分大小写。@学习不应该是个问题。只需将其作为一个扩展方法。@MightyBadaboom SQL并不总是不区分大小写,它取决于数据库上的colation。@了解您在哪里使用扩展方法?如果您要为它创建一个扩展方法,尽管我认为这对于您的情况来说太过分了,您应该将其称为:stringnewsql=str.Foo(“where”,StringComparison.OrdinalIgnoreCase)代码>。你不必这样调用它,你可以用静态的方式调用它,但是我看不出为它创建扩展方法的意义。