ファイル (テキストアセット) を 1 行ずつ読み取って結果を取得するのに問題があります。
読み込もうとしているファイルは次のとおりです。
AUTHOR
COMMENT
INFO 1 X ARG 0001 0.581 2.180 1.470
INFO 2 X ARG 0001 1.400 0.974 1.724
INFO 3 X ARG 0001 2.553 0.934 0.751
INFO 4 X ARG 0001 3.650 0.494 1.053
INFO 5 X ARG 0001 1.188 3.073 1.532
INFO 6 X ARG 0001 2.312 1.415 -0.466
INFO 7 X ARG 0001 -0.232 2.249 2.180
END
私が使用しているコードは次のとおりです。
//read file
string[] line = file.text.Split("\n"[0]);
for(int i = 0 ; i < line.Length ; i++)
{
if(line[i].Contains("INFO"))
{
//To replace all spaces with single underscore "_" (it works fine)
string l = Regex.Replace(line[i]," {2,}","_");
//In this Debug.Log i get correct results
//For example "INFO_1_X_ARG_0001_0.581_2.180_1.470"
Debug.Log(l);
string[] subline = Regex.Split(l,"_");
//Only for first "INFO" line i get correct results (INFO,1,X,ARG,0001,0.581,2.180,1.470)
//For all other "INFO" lines i get incomplete results (first,fourth and fifth element are not put into substrings
//like they are dissapeard!
foreach(string s in subline){Debug.Log(s);}
}
}
説明:
最初にテキストを行に分割し(正常に動作します)、次に含む行のみを読み取りますINFO
すべてのスペースを含むすべての行をループしINFO
、すべてのスペースをアンダースコアに置き換えます_
(これは正常に機能します)
INFO
アンダースコアに基づいて部分文字列に含まれる行を分割します_
行を印刷すると、最初の行だけINFO
がすべての部分文字列を持っているように見えますが、次の行ごとに正しく分割されていません (最初の部分INFO
と 3 番目の文字列は省略されています)
とても頼りにならないようです。これは、これらのことを行う方法ですか?どんな助けでも大歓迎です!これは簡単なはずですが、何が間違っていますか?
編集:
このコードには何か問題があります (単純なはずですが、機能しません)。
更新されたコードは次のとおりです(すべての部分文字列を作成しList<string> list = new List<string>()
てコピーしました。リストの内容がインスペクターに表示されるように、unity3Dを使用しています。すべての部分文字列を適切に抽出したが、単純であることにショックを受けました
foreach(string s in list)
Debug.Log(s);
確かにいくつかの値がありませんでした。だから私はさまざまなこととこのコードを試していました:
for(int x = 0; x < list.Count ; x++)
{
Debug.Log("List: " + x.ToString() + " " + list[x].ToString());
}
リストの内容を適切に表示しますが、このコード (削除したばかりであることに注意してくださいx.ToString()
) にはリスト内のいくつかの要素がありません。読みたくない!
for(int x = 0; x < list.Count ; x++)
Debug.Log("List: " + list[x].ToString());
だから私はここで何が起こっているのかわからない?!