私は C# で単純なテキスト アドベンチャーを作成しています。.txt ファイルから特定の行を読み取って文字列に割り当てることができるかどうか疑問に思っていました。
.txt ファイルからすべてのテキストを読み取る方法は知っていますが、特定の行の内容を文字列に正確に割り当てるにはどうすればよいでしょうか?
ReadAllLinesメソッドを検討しましたか?
目的の行を選択できる行の配列を返します。
たとえば、3 行目を選択する場合 (ファイルに 3 行あると仮定します):
string[] lines = File.ReadAllLines(path);
string myThirdLine= lines[2];
おそらく最も簡単な(そしてメモリ消費の面で最も安い)のは次のFile.ReadLines
とおりです。
String stringAtLine10 = File.ReadLines(path).ElementAtOrDefault(9);
null
ファイル内の行数が 10 行未満の場合であることに注意してください。参照: ElementAtOrDefault
。
StreamReader
これは、行ごとに増加するa とカウンター変数の簡潔なバージョンです。
すべての行を一度にロードしたくない場合
using(StreamReader reader=new StreamReader(path))
{
String line;
while((line=reader.ReadLine())!=null)//process temp
}
行を文字列に割り当てる方法の例を次に示します。フィールドを介してどの行がどれであるかを判断することはできません。自分で選択する必要があります。これは、割り当てたい文字列の行です。たとえば、ライン 1 が必要な場合、どれを 0 ではなく 1 として定義し、ライン 8 が必要な場合、どれを 8 で定義します。
string getWord(int which)
{
string readed = "";
using (Systen.IO.StreamReader read = new System.IO.StreamReader("PATH HERE"))
{
readed = read.ReadToEnd();
}
string[] toReturn = readed.Split('\n');
return toReturn[which - 1];
}
高度な代替手段として: ReadLinesといくつかの LINQ:
var lines = File.ReadLines(myFilePath).Where(MyCondition).ToArray();
ここでMyCondition
:
bool MyCondition(string line)
{
if (line == "something")
{
return true;
}
return false;
}