C#でawk '/start/,/end/' file
と同じ機能を実行する関数(必要に応じてヘルパー関数のセットとともに)を作成したいすべての最後の試合は、最初に終了するよりもむしろ。パターン範囲/ start// end/
は、我々が持っているとしましょう:
# cat text
"13:08:30:5276604 Main: 41044 - 48.7617 M-- Other PIDS 2 - 79.1016 M"
"13:08:30:5736962 Main: 41044 - 48.7617 M-- Other PIDS 2 - 79.1016 M"
"13:08:30:6227343 Main: 41044 - 48.7617 M-- Other PIDS 2 - 79.1016 M"
"13:08:30:6757752 Main: 41044 - 48.7617 M-- Other PIDS 2 - 79.1016 M"
"13:08:30:7208103 Main: 41044 - 48.7617 M-- Other PIDS 2 - 79.1016 M"
"13:08:30:7668739 Main: 41044 - 48.7617 M-- Other PIDS 2 - 79.1016 M"
"13:08:30:8129079 Main: 41044 - 48.7617 M-- Other PIDS 2 - 79.1016 M"
予想:
"13:08:30:6227343 Main: 41044 - 48.7617 M-- Other PIDS 2 - 79.1016 M"
"13:08:30:6757752 Main: 41044 - 48.7617 M-- Other PIDS 2 - 79.1016 M"
"13:08:30:7208103 Main: 41044 - 48.7617 M-- Other PIDS 2 - 79.1016 M"
"13:08:30:7668739 Main: 41044 - 48.7617 M-- Other PIDS 2 - 79.1016 M"
AWK出力:私が最初に私はちょうど2つの条件pattern_1 | pattern_2
で正規表現マッチを得るかもしれないと思った
# awk '/13:08:30:62/,/13:08:30:7/' text
"13:08:30:6227343 Main: 41044 - 48.7617 M-- Other PIDS 2 - 79.1016 M"
"13:08:30:6757752 Main: 41044 - 48.7617 M-- Other PIDS 2 - 79.1016 M"
"13:08:30:7208103 Main: 41044 - 48.7617 M-- Other PIDS 2 - 79.1016 M"
ただし、一致する値の間に値がある場合、これは機能しません。
また、C#StringBuilderクラスに.indexOf()
と.lastIndexOf()
メソッドがないことも発見しました(私はJavaでもう少し経験がありますので、C#を使用していないことがわかるまでこれらを使用することを考えていました)。私はこれらの方法を持っておらず、おそらくそれらを実装する必要があるので、私はこれが行くべきアプローチかどうか尋ねたいと思っていました。このセクションでは、広範な検索が必要な場合はStringを使用することを提案しています:MSDN - 私は確かにそれを使用することもできます。 StringBuilderを使用することを選択しました。なぜなら、文字列連結が常に実行されるからです。文字列(多くの連結)を構築するときにstringbuilder
タイプを使用する必要がありますが、次に検索するとstring
タイプに変換されますか?
私はこれも演奏者になりたいと思いますし、そのようにする方法を提案するのはすばらしいことです。一般的なガイダンスと実装の詳細は高く評価されます。
あなたの問題は、どのように特定のでしょうか?これはこの特別な場合にのみ有効か、awkと同じスコープで動作すべきか? – MetaColon
'StringBuilder'は文字列_building_のためのものです。最初にそれを構築し、文字列全体を生成し、 'String'関数を使って検索します。 –
@MetaColon - 特定の場合だけでなく、より一般性が望まれます。私は次のように指定します: "utf8文字列の中に存在する2つのパターンは、最初のパターンで始まり2番目のパターンで終わるテキストを見つけます。"/end /パターンの行全体を追加する追加の要件を追加することができます。 @D Stanley - あなたが正しい軌道にいることを確認するのは、いつも良いことです。 –