indexOfをtry文で使うとコードが終了する

実現したいこと

C#初めて二日目です。
これまで様々な言語をやってきて主にCやVCをやってきました。
今回長いコードではないので、なんとか処理が実行できればオッケーだと考え
配列を使った効率化などは全くやってません。
そこまで学ぶ時間がないからです。
実現したいことは
エラーがなぜ発生したか知りたいです。

発生している問題・分からないこと

以下の文をtyr文の中で実行するとコードが終了します。
try文ではファイル処理を行ってます。
if (line.IndexOf("あああ", 0, 16) != -1) {
i = 0;
}

エラーメッセージ

error

1Exeああああck. 2Exception: Count must be positive and count must refer to a location within the string/array/collection. (Parameter 'count') 3Executing finally block.

該当のソースコード

String line; try { //Pass the file path and file name to the StreamReader constructor StreamReader sr = new StreamReader(path, Encoding.GetEncoding("shift-jis")); //Read the first line of text line = sr.ReadLine(); //Continue to read until you reach end of file //Pass the file path and file name to the StreamReader constructor StreamWriter sw1 = new StreamWriter(out1, false,Encoding.GetEncoding("shift-jis")); StreamWriter sw2 = new StreamWriter(out2, false, Encoding.GetEncoding("shift-jis")); StreamWriter sw3 = new StreamWriter(out3, false, Encoding.GetEncoding("shift-jis")); StreamWriter sw0 = new StreamWriter(out0, false, Encoding.GetEncoding("shift-jis")); int i = 0; int j = 0; while (line != null) { j = 0; k++; Console.WriteLine("Exeああああck."); //write the line to console window if (line.IndexOf("あああ", 0, 16) != -1) { i = 0; } Console.WriteLine("Exeああsssk."); if (line.IndexOf("いいい", 0, 16) != -1) { i = 1; } if (line.IndexOf("ううう", 0, 16) != -1) { i = 2; } if (line.IndexOf("えええ", 0, 16) != -1) { i = 3; } Console.WriteLine("Exeああああck."); if (i == 0) { sw0.WriteLine(line); } if (i == 1) { sw1.WriteLine(line); } if (i == 2) { sw2.WriteLine(line); } if (i == 3) { sw3.WriteLine(line); } if (line.IndexOf("」", 0, 16) != -1) { j = 1; i = 4; } Console.WriteLine(line); //Read the next line line = sr.ReadLine(); } //close the file sr.Close(); sw1.Close(); sw2.Close(); sw3.Close(); sw0.Close(); Console.ReadLine(); } catch (Exception e) { Console.WriteLine("Exception: " + e.Message); } finally { Console.WriteLine("Executing finally block."); } System.Console.WriteLine(k); } }

試したこと・調べたこと

上記の詳細・結果

ざっと翻訳しましたが意味が分からなかったです。

補足

特になし

コメントを投稿

0 コメント