C#で単純な正規表現を作成して、文字列をトークンに分割しようとしています。私が実行している問題は、私が使用しているパターンが空の文字列をキャプチャして、私の期待している結果を投げ捨てるということです。正規表現を変更して空の文字列を取得しないようにするにはどうすればよいですか?C#正規表現空の文字列を取り込む
var input = "ID=123&User=JohnDoe";
var pattern = "(?:id=)|(?:&user=)";
var tokens = Regex.Split(input, pattern, RegexOptions.IgnoreCase);
// Expected Results
// tokens[0] == "123"
// tokens[1] == "JohnDoe"
// Actual Results
// tokens[0] == ""
// tokens[1] == "123"
// tokens[2] == "JohnDoe"
参照[「クエリ文字列」フォーマットされたデータを解析する最も簡単な方法(https://stackoverflow.com/questions/11956948/easiest-way-to-parse-querystring-formatted-data)。 –
リンクはOPには答えません - .NETコアには存在しないSystem.Net.Http静的メソッドを使用しています –
@WiktorStribiżewは確実に良いアプローチを示しています。意味的に同じ入力 '' User = JohnDoe&ID = 123 ''であなたのクエリ文字列が失敗するでしょう。この車輪を改造しないのが最善です。 –