C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[8]: 円マーク一つを文字列にするには


(過去ログ 39 を表示中)

[トピック内 11 記事 (1 - 11 表示)]  << 0 >>

■20153 / inTopicNo.1)  円マーク一つを文字列にするには
  
□投稿者/ かずや (1回)-(2008/06/06(Fri) 19:21:08)

分類:[C#] 

お疲れ様です。

エスケープ文字(円マーク)を"円マーク"としてするには、どうすれば良いでしょうか?

"円マーク円マーク"をReplaceして、一つの"円マーク"にしたいのですが、
"円マーク"がうまく出来ません。

以前、やった気はするのですが、全く思い出せません。

引用返信 編集キー/
■20156 / inTopicNo.2)  Re[1]: 円マーク一つを文字列にするには
□投稿者/ 高見知英 (3回)-(2008/06/06(Fri) 19:36:49)
高見知英 さんの Web サイト
@"\"かな。
"\"は表現上"\\"と表示されているだけであり、実体は\一つですので、replaceしても意味がありません
この返信の冒頭に書いたように、@を文字列リテラルの前に置けば\をエスケープシーケンスとして処理しなくなるので、\一つで\が表現できます。

なんだかわかりづらい表現ですが・・・ とりあえずヘルプにも載っていることですので、ヘルプの文字列の項をもう一度よく確認してみてください。
引用返信 編集キー/
■20159 / inTopicNo.3)  Re[2]: 円マーク一つを文字列にするには
□投稿者/ かずや (3回)-(2008/06/06(Fri) 19:53:32)
No20156 (高見知英 さん) に返信
> @"\"かな。
> "\"は表現上"\\"と表示されているだけであり、実体は\一つですので、replaceしても意味がありません
> この返信の冒頭に書いたように、@を文字列リテラルの前に置けば\をエスケープシーケンスとして処理しなくなるので、\一つで\が表現できます。
>
> なんだかわかりづらい表現ですが・・・ とりあえずヘルプにも載っていることですので、ヘルプの文字列の項をもう一度よく確認してみてください。

さっそくの返信ありがとうございます。

Replace("\\", @"\")とやってはみたのですが、
リプレイスされなかったです。(先に書く情報でしたね。すいません)

他に正規な方法があるかなと掲示板に質問したのですが・・・
もっと根本的な間違いなのでしょうか?
重ね重ねすみません
引用返信 編集キー/
■20160 / inTopicNo.4)  Re[3]: 円マーク一つを文字列にするには
□投稿者/ はまや (26回)-(2008/06/06(Fri) 19:58:12)
それだと
Replace("\\\\", "\\")では?
@を付けるときは、どうするんだろう?
引用返信 編集キー/
■20161 / inTopicNo.5)  Re[3]: 円マーク一つを文字列にするには
□投稿者/ じゃんぬねっと (549回)-(2008/06/06(Fri) 20:31:49)
No20159 (かずや さん) に返信
> Replace("\\", @"\")とやってはみたのですが、
> リプレイスされなかったです。(先に書く情報でしたね。すいません)

逐語的リテラル、エスケープ文字を理解しないで問題解決を図るというのがムリがあるような気がします。
理解すれば、上記のソースは置換はされているが、同じものを同じものに置換しているだけというのがわかるはずです。
引用返信 編集キー/
■20180 / inTopicNo.6)  Re[4]: 円マーク一つを文字列にするには
□投稿者/ はまや (27回)-(2008/06/07(Sat) 09:06:25)
余談ですが
プログラム埋め込みのリテラル文字ではなく、どこからか別途取得したとして
「c:\test\\fol」というパスの場合、それをそのままプログラムに渡すと
正常に動作しない事とかありませんか?
パスとファイル名を別々にしている場合で、それを単純にくっつけた場合でも
「c:\test\fol\\test.txt」などというフルパスを生成してしまって、そのまま渡すと
エラーになったりとか。

今までVC++で作成していましたが、そのようなパスを渡しても正常に動作するのに
(MFCなので、主にCFileクラス使用です)
なぜか他のアプリに意地悪で「\\」を二つ付けたりすると動作しなかったりします。

なので状況においては、¥マーク2つを1つに置換するというのも
分かるような気がするのですが、2つも1つもやはり同じなのでしょうか?
引用返信 編集キー/
■20187 / inTopicNo.7)  Re[5]: 円マーク一つを文字列にするには
□投稿者/ ちゃっぴ (113回)-(2008/06/07(Sat) 11:42:35)
ちゃっぴ さんの Web サイト
No20180 (はまや さん) に返信
> なので状況においては、¥マーク2つを1つに置換するというのも
> 分かるような気がするのですが、2つも1つもやはり同じなのでしょうか?

基本的に Win32 では path separator の連続は問題ないはずですが、変な validation かましていると引っかかることあるでしょう。個人的には、そんな validation はやらないに限ると思っています。

Validation かますなら absolute path 変換したやってからですね。
引用返信 編集キー/
■20189 / inTopicNo.8)  Re[6]: 円マーク一つを文字列にするには
□投稿者/ れい (605回)-(2008/06/07(Sat) 11:51:06)
No20187 (ちゃっぴ さん) に返信
> 基本的に Win32 では path separator の連続は問題ないはずですが、変な validation かましていると引っかかることあるでしょう。個人的には、そんな validation はやらないに限ると思っています。

最初の「\\」だけは特別な意味があるかと。

> Validation かますなら absolute path 変換したやってからですね。

absolute path 変換しちゃうと
TRAVERSE権限のないディレクトリが間に入っちゃった場合に困りませんか?

引用返信 編集キー/
■20192 / inTopicNo.9)  Re[7]: 円マーク一つを文字列にするには
□投稿者/ ちゃっぴ (115回)-(2008/06/07(Sat) 12:45:03)
ちゃっぴ さんの Web サイト
No20189 (れい さん) に返信
> 最初の「\\」だけは特別な意味があるかと。

そりゃ勿論です。

> absolute path 変換しちゃうと
> TRAVERSE権限のないディレクトリが間に入っちゃった場合に困りませんか?

FILE_TRAVERSE ですか?たしか、SE_CHANGE_NOTIFY_NAME を無効化するためのやつですよね?
それがあって、reparse point とか使われると確かに終わりますね。
でも、そこまで考慮すると validation が厄介なことに。

もっとも、個人的には filename の validation はほとんどやらずにそのまま API に渡しちゃっていますが。
Access control は ACL で厳密に適用しますので。
Filename の validation やることの方が少ないなぁ。
引用返信 編集キー/
■20193 / inTopicNo.10)  Re[8]: 円マーク一つを文字列にするには
□投稿者/ れい (606回)-(2008/06/07(Sat) 12:57:50)
No20192 (ちゃっぴ さん) に返信
> FILE_TRAVERSE ですか?たしか、SE_CHANGE_NOTIFY_NAME を無効化するためのやつですよね?
> それがあって、reparse point とか使われると確かに終わりますね。
> でも、そこまで考慮すると validation が厄介なことに。

あれ?
あまり皆さん使わないですか?
練度の低い多人数でPCを共有するような環境、学校などでは
「マイドキュメント」以下しか見れないように、とかしますよね。
そのときによく使っていたのですが。

「\AA\BB\CC\EE.exe」みたいなパスがあって、
ユーザーにBBとかCCを見せたくないときに、存在すら知らせたくないときに、
TRAVERSE権限をユーザーに与えない、みたいなことをしてたのですが。

あまりやらないみたいですね…。

それを意識して、パス文字列はabsoluteに変換しないようにしてました。
#「.」とか「..」が非常にめんどくさいのです…。
引用返信 編集キー/
■20194 / inTopicNo.11)  Re[8]: 円マーク一つを文字列にするには
□投稿者/ はまや (29回)-(2008/06/07(Sat) 13:04:44)
深い話になってきましたが、確かに単純に\\を\にReplaceすると
ネットワークが絡んでくると逆に不具合でそうですね

得たパスは何もしないでAPIなり関数に渡した方が無難ということですか

> Filename の validation やることの方が少ないなぁ。
記憶を探ってみましたが、たしかにやった事ないです。。。

スレ主さんの場合は、ファイルパスでは無いかもしれませんので
あくまで余談でした。m(__)m
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -