- PR -

テキストファイルから取り出した文字列が一致しない。

1
投稿者投稿内容
未記入
会議室デビュー日: 2007/09/11
投稿数: 7
投稿日時: 2007-09-11 03:12
初めて投稿させていただきます。

現在私は、テキストファイルにカンマと改行区切りの設定ファイルを作成し、
まずarrayに各行をsplitで格納し、さらにその列をsplitでコンマで区切って別のarrayに格納した後、
For i As Integer = 0 To array1.Length - 1
Dim array2 As Array = array1(i).split(",")
If array2(0).ToString = "任意の文字列" Then /*ここが一致せず*/
txt = array2(1) /*ここに入ってくれません*/
Exit For
End If
Next
としています。
絶対に一致するようにテキストファイルを書きかえる等の処置を試みてみても、
またデッバガで見ても、完全に一致しているようにように見えるのですが、
if文がtrueになることはありませんでした。

何分無知ではありますが、お力をお貸しいただければ幸いです。
よろしくお願いいたします。
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2007-09-11 05:56
引用:

絶対に一致するようにテキストファイルを書きかえる等の処置を試みてみても、
またデッバガで見ても、完全に一致しているようにように見えるのですが、
if文がtrueになることはありませんでした。



本当に完全に一致するのに入らないならかなりやばいバグですね。
対象のtxtファイルと比較対象の文字列が無いので
正確なことはいえませんが、
前後の空白やキャピタライズを確認してください。

array2(0).Trim.ToLower = ("任意の文字列").Trim.ToLower

とかでどうでしょう?

比較文字列に特殊な文字列が入ってるとこれでもだめかもしれません。
RLMだとか、外字だとか。
たぶん、タブや空白が入ってるというだけの問題だと思います。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2007-09-11 09:00
Encoding.GetBytes()で、文字列をバイトの配列にして見比べてみてはいかがでしょうか。
未記入
会議室デビュー日: 2007/09/11
投稿数: 7
投稿日時: 2007-09-11 23:18
れい様、一郎様、ご返事ありがとうございました。
先ほどTrim.ToLowerを試したとこと、思い通りに動いてくれました。
ありがとうございました。

また質問いたすこともあろうかと思いますが、何卒よろしくお願いいたします。
失礼いたします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-09-13 21:46
引用:

先ほどTrim.ToLowerを試したとこと、思い通りに動いてくれました。


え?
ごめん、すっごく興味がある。

引用:
絶対に一致するようにテキストファイルを書きかえる等の処置を試みてみても、
またデッバガで見ても、完全に一致しているようにように見える


って、書かれていますよね?

じゃぁ、
ファイル中にどのように設定し、デバッガ上でどのように見えていた文字列が、
コード上のどんな文字列と
一致しなかったのでしょう?


Trim.ToLower は、
最初の可視文字より前、および最後の可視文字より後にある空白文字を除去する Trim と、
英大文字を英小文字に変換する ToLower を続けて実行します。
Trim だけで良いと思います。つか、良くないと、仕様上問題ありませんか?
コード:
おそらく、「aaa    ,   bb   , ccc」ってな形で、
"aaa" と "aaa    " を比較しようとしていたのだと思いますけど。
この場合、「aaa    」を、"aaa    " と取得してきたことが問題ではないでしょうか?
また、「"aaa    ","   bb   "," ccc"」となっていたら、どうしますか?
この場合、""aaa    "" を拾ってきますか?それとも "aaa    " だけ?
後者なら、Trim でスペースが消えてしまいますが、問題ないですか?


(スペースを出すために code 使用)
1

スキルアップ/キャリアアップ(JOB@IT)