0

linqpad に次のサンプル コードがあります。コピーして linqpad に貼り付け、Language c# ステートメントを選択してこれを実行します。

現在、'AB%C' は AB C のみに一致します。% を SQL のように 0 個以上の文字に一致させたいと考えています。

// Define Stock Items
List<StockItem> stockItems = new List<StockItem>();

stockItems.Add(new StockItem{
Id = 0,
Code = "444B",
Description = "AB C"
});

stockItems.Add(new StockItem{
Id = 0,
Code = "11221",
Description = "ABC"
});

// Regex Search of Stock Items
string searchString = "AB%C";
string regexSearch = searchString
                 .Replace("*", ".+")
                 .Replace("%", ".+")
                 .Replace("#", "\\d")
                 .Replace("@", "[a-zA-Z]")
                 .Replace("?", "\\w");
Regex regex = new Regex(regexSearch);

List<StockItem> results;
results = stockItems.Where(s => regex.IsMatch(s.Description)).ToList();

results.Dump();

} // Bracket defines end of logic so we can declare classes next

// StockItem Class
internal class StockItem
{ 
public int Id {get; set;}
public string Code {get; set;}
public string Description {get; set;}
// } Don't close class for linqpad!

このstackoverflowスレッドから正規表現を取得しています

4

1 に答える 1

3

+「1つ以上」を意味しますが、*代わりに「ゼロ以上」が必要です。

.Replace("%", ".*")
于 2013-10-21T23:30:03.480 に答える