1

私は文字列を持っています..言ってみましょう:

string MyString = "SELECT Stuff FROM Table WHERE Code = "Foo" AND DATE=20120101";

に置き換え20120101たい?。しかし、20120101検索する文字列は常に同じとは限りません。常に で始まり、2常に 8 文字で構成されます。20121225、20130510 などの可能性があります。

何とかワイルドカードを使用できますか? 次のように:

string Fixed = MyString.Replace("2*******", "?");

私が探しているのは、この結果です:

MyString = "SELECT Stuff FROM Table WHERE Code = "Foo" AND DATE=?";
4

4 に答える 4

4

正規表現を使用できます:

Regex.Replace(input,@"DATE=""\d*""", "?");

ただし、これが SQL クエリの場合は、パラメーター化されたクエリを使用して、SQL インジェクション攻撃などを回避することをお勧めします。これは、このようなことを行う業界標準の方法です。

于 2013-01-30T16:50:46.723 に答える
3
string Fixed = Regex.Replace( MyString, @"DATE=2\d{7}", "DATE=?" ); 

または、肯定的な後読みを使用する

 Replace( MyString, @"(?<=DATE=)2\d{7}", "?" ); 
于 2013-01-30T17:19:23.483 に答える
0

正規表現の置換方法を使用できます。

    string oldstring = "20120101";
    string newstring = Regex.Replace(oldstring, @"^2[0-9]{7}", "?");
于 2013-01-30T16:55:47.977 に答える
0

それで、これはあなたが探しているものですか?

string MyString = "SELECT Stuff FROM Table WHERE Code = {0} AND DATE={1}";

これにより、次のような {0} と {1} で必要なものと同じ文字列を使用できます。

String.Format(MyString, codeString, dateString);

必要なパラメーターを使用してクエリ文字列を再利用できます。

于 2013-01-30T17:07:15.907 に答える