トップ回答者
標準出力をsplitで分割して文字比較

質問
-
標準出力をsplitで分割して文字比較が何故かできないです。
lineには上段の処理で"/xxxxx=◯◯"のような行が複数行標準出力から返ってきます。
4行目や6行目での比較は出来ているのですが、10行目の比較でenvline(1)が「test」になっていて、ブレークで止めてもstr1やstr2の内容がきちんと「test」であるにもかかわらず、条件内の11行目に入りません。
streamの最終文字に何か不正な文字でも入っているのかとしつこく調べてみたのですが、デバッガ上で示される文字はどうみてもtestの文字が返ってきています。
何かすごく単純なことのようにも思えますが、どなたかご教授いただければ幸いです。
よろしくお願いいたします。
1 Do Until myprocess.StandardOutput.EndOfStream
2 line = myprocess.StandardOutput.ReadLine
3 envline = Split(line, "=", -1, CompareMethod.Text)
4 If envline(0) = "/XXXX" Then
5 str1 = DirectCast(envline, String())(1) ’str1=envline(1)でも同じ
6 ElseIf envline(0) = "/YYYY" Then
7 str2 = String.Copy(envline(1))
8 End If
9 Loop
10 If str1 = "test" Or str2 = "test" Then
11 Response.Redirect("ErrorPage.aspx")
12 End If- 編集済み ともだまさひろ 2013年9月23日 12:43 ソース修正
回答
すべての返信
-
galacoさま
Dim chArray1 As Char() = str1.ToCharArray() で見てみたところ
改行コードではなく、おしりに「"」が見えました。
実は質問以前に Replaceでvbcrlfとvblfを「""」空文字に変換していたりもしたのでしたがダメだったのです・・
「"」が出力されている理由や「"」がデバッガ上の表示で見えない理由は不明ですが、とりあえず、Leftで取り出したら、思った通りの動作になりました。
取り急ぎ対処は出来たので助かりました。
ありがとうございます。
回答マークは上記のあたりがはっきりしたら付けさせてもらいます。
よろしくお願いいたします