QA@IT
«質問へ戻る

質問を投稿

この2つの文字列の違いは?

現在、自分のサーバにあるRSSをパースしようとしています。しかしファイルの読み込み時にファイルが読み込まれずにエラーになってしまいます。しかしfilepathをハードコーティングすればファイルが読み込まれます。

具体的に例を挙げて説明します。現状と際が出ないように余分な部分も少し書いてますが、主にs_hardとs_softをみてください。

$root_directory_path = File.expand_path(__FILE__)[0..File.expand_path(__FILE__).rindex("/")] + "../"

rss_file_name = "topselling_free_rss.xml"

#s_hardの内容は$root_directory_path + "public/" + rss_file_name の出力結果
s_hard = "/Users/lain/Dropbox/RailsProject/androidrss/crontab/../public/topselling_free_rss.xml"
s_soft = $root_directory_path + "public/" + rss_file_name
if s_hard == s_soft#ここはtrueを返します。
    p RSS::Parser.parse(s_soft)# nil
end
p RSS::Parser.parse(s_hard)# <?xml version="1.0" encoding="UTF-8"?>
                                             #<rss version="2.0" ....

なおこのrbファイルはルートディレクトリから実行しました。

RSS::Parser.parse(s_soft)の出力結果はnilで
RSS::Parser.parse(s_hard)の出力結果は正常です。

私の目には、s_softとs_hardは同じstringに見えます。
この2つの変数の違いはなんですか?ご回答いただけると幸いです。

現在、自分のサーバにあるRSSをパースしようとしています。しかしファイルの読み込み時にファイルが読み込まれずにエラーになってしまいます。しかしfilepathをハードコーティングすればファイルが読み込まれます。

具体的に例を挙げて説明します。現状と際が出ないように余分な部分も少し書いてますが、主にs_hardとs_softをみてください。

```ruby
$root_directory_path = File.expand_path(__FILE__)[0..File.expand_path(__FILE__).rindex("/")] + "../"

rss_file_name = "topselling_free_rss.xml"

#s_hardの内容は$root_directory_path + "public/" + rss_file_name の出力結果
s_hard = "/Users/lain/Dropbox/RailsProject/androidrss/crontab/../public/topselling_free_rss.xml"
s_soft = $root_directory_path + "public/" + rss_file_name
if s_hard == s_soft#ここはtrueを返します。
    p RSS::Parser.parse(s_soft)# nil
end
p RSS::Parser.parse(s_hard)# <?xml version="1.0" encoding="UTF-8"?>
                                             #<rss version="2.0" ....
```
なおこのrbファイルはルートディレクトリから実行しました。

RSS::Parser.parse(s_soft)の出力結果はnilで
RSS::Parser.parse(s_hard)の出力結果は正常です。

私の目には、s_softとs_hardは同じstringに見えます。
この2つの変数の違いはなんですか?ご回答いただけると幸いです。