2

検索してから特定のフレーズを選別するために印刷する必要があるテキスト ファイルがあります。

テキスト ファイルを文字列に取り込んで、次のようにフレーズの最初の部分のインデックスを見つけることができます。

int first = source.IndexOf(start-keyword);

source はテキスト ファイルの文字列で、start-of-phrase は探している最初のキーワードです。

ただし、 end キーワードのインデックスを取得しようとすると、 end キーワードが最初のキーワードの前に来ることがあるため、スタックします。

そこで、コードに次のビットを追加して、次のようにしました。

int first = source.IndexOf(start-keyword);
string source2 = source.Substring(first, source.Length - first);
int last = source2.IndexOf(end-keyword) + end-keyword.Length;
phrases.Add(source.Substring(first, last));

次に、最後の行でそれをフレーズと呼ばれるリストに追加します。

ただし、範囲外または完全なフレーズを抽出していないなどのエラーが発生し始めるため、これをループする満足のいく方法を見つけることができないようです?

ありがとう

4

2 に答える 2

3

最初の開始オカレンスの終わりの開始インデックス値を指定できるString.IndexOf Method(String, Int32)を使用して確認することをお勧めします。

int last = source.IndexOf(end-keyword, first + start-keyword.Length ) 
           + end-keyword.Length;
于 2012-07-24T19:18:31.687 に答える
0

これは、正規表現の理想的な候補のように思えます。何かのようなもの

"(\b[Pp]rogram\b)(.*)(\b[Vv]cvarsall\b)"

一致する必要があります

"Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall" 

"something Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall something"
于 2012-07-24T19:38:46.267 に答える