1
私が構築したファイル管理プログラムでは、単語を見つける方法があります。あなたは、プログラムが探したい単語を入力します。 True
またはFalse
のようになります。また、プログラムに入力することでファイルパスを指定します。単語の複数のインスタンスを1行で検出するC#
public void searchForWord()
{
using (StreamReader fs = File.OpenText(filePath))
{
int count = 0; //counts the number of times wordResponse is found.
int lineNumber = 0;
while (!fs.EndOfStream)
{
string line = fs.ReadLine();
lineNumber++;
int position = line.IndexOf(wordSearch);
if (position != -1)
{
count++;
Console.WriteLine("Match#{0} line {1}: {2}", count, lineNumber, wordSearch);
}
}
if (count == 0)
{
Console.WriteLine("your word was not found!");
}
else
{
Console.WriteLine("Your word " + "'" + wordSearch + "'" + " was found " + count + " times!");
}
Console.WriteLine("Press enter to quit.");
Console.ReadKey();
}
}
プログラムは機能していますが、機能していても1つのバグがあります。これは、私が実行しているテストファイルのスニペットです。
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis lectus sem, eleifend in enim vel, imperdiet pretium justo.
Vivamus sit amet arcu sed metus rutrum varius vitae vitae turpis. Quisque aliquet mauris lacus, quis aliquam metus placerat vel.
Proin eleifend tortor velit, False quis aliquam arcu congue ut. Fusce sed mattis purus, sed vehicula diam. False Nullam in leo sit amet massa pharetra semper et vel diam.
Sed at dolor aliquam libero bibendum porta.
あなたは私がテストしてきた段落の3番目の行を読んでいる場合、それはFalse
の2セットを持っていますが、私のプログラムは、最初のものだけを検出します。
ここに示されているように:
Match#1 line 3: False
Match#2 line 7: False
Match#3 line 17: False
Match#4 line 19: False
Match#5 line 24: False
Your word 'False' was found 5 times!
これは私のプログラムが私に与え出力されます。 1行に2つ以上の単語のインスタンスが考慮されるように調整するにはどうすればよいですか?
IndexOfには、開始位置をとる余分なオーバーロードがあります。 indexOfが-1を返すまでindexOfから取得した最後の値をループ内で使用します。 – rene
文字列内に単語があるかどうかを調べるのではなく、文字列内に_all_ occurencesを見つけることに興味があります、出現回数。 – cubrr