.NET Frameworkでコマンドラインパラメータを取得するときの挙動がおかしい希ガス
- PrincePOPI_
- 3110
- 0
- 0
- 0
気づいたんだけど、.NETで、コマンドラインパラメータに "a\" みたいに最後に \ が入った文字列をダブルクォートで囲んで渡すと、Environment.GetCommandLineArgs の結果が a" みたいになって返ってくるんだけど、これってバグだよね?
2010-09-23 10:10:17@hatsune_ 自分の環境はC#です。Environment.CommandLine は問題なかったので、GetCommandLineArgs のバグなのかな?と
2010-09-23 10:15:03@PrincePOPI \がエスケープ文字として扱われてて、\" で "を指定してる、と見てるんだろね。そういう意味では文字列を閉じてないあつかいにならずに処理しちゃってるのが問題といえば問題かな。
2010-09-23 10:16:08@onos たぶんそうなんだと思います。 "a\b\c\" みたいに途中に \ が入っている場合は a\b\c" って取れるんですよね。
2010-09-23 10:17:59@onos うーむ、バグとは言い切れない、って感じでしょうか。俺「バグじゃねえの?」 ゲイツ「仕様です!(キリッ」 みたいな。
2010-09-23 10:18:43.@PrincePOPI @onos 「"a\" popi」といれたら「"a" popi"」になりました。「」は除く。
2010-09-23 10:21:14なるほど。そういう方向でやってみます QT @onos: @PrincePOPI @hatsune_ \rや\nも。なので\を文字列中で使いたいなら一度\\に変換すべきかと。
2010-09-23 10:24:24.@onos @PrincePOPI これコマンドライン引数として意図的にUnixっぽいエスケープシーケンスになるようにしてるんじゃ?
2010-09-23 10:23:46ぐは。 "\\t\\r\\n\\" ってやったら \\t\\r\\n\ になった。純粋に最後の文字だけおかしいwwww
2010-09-23 10:26:40あら。。。それはたしかにおかしい(w RT @PrincePOPI: ぐは。 "\\t\\r\\n\\" ってやったら \\t\\r\\n\ になった。純粋に最後の文字だけおかしいwwww
2010-09-23 10:32:16