質問

string.formatで単一の引用を逃れる方法を検索している間、私はで答えを見つけました SO:string.format()で単一の引用を逃がす

しかし、VBでは違うようです。私はそれをテストしました、そして実際にC#のニーズ

string s = DateTime.Now.ToString("MMM d \\'yy 'at' H:mmm");

VBが必要です

Dim s As String = Now.ToString("MMM d \'yy 'at' H:mmm")

なぜC#が二重のバックスラッシュを必要とし、VBが単一のバックスラッシュを必要とするのですか?これはC#ユーザーにとっては少しばかげた質問かもしれませんが、C#を読むことはできますが、書くことに慣れていません。

役に立ちましたか?

解決

C#では、文字列リテラルには、新しい行の場合は n、タブの場合は tなどのエスケープシーケンスを含めることができます。見積もりでは。 @"MMM ...")そして、同じ文字列A VBを取得します。

VBでは、逃げることは決して許可されていないため、バックスラッシュから逃れる必要はありません。

他のヒント

その理由は、C#が文字列リテラル内のエスケープシーケンスをサポートしているためです。 \ キャラクター。 VBにはそのような脱出メカニズムがないため、シングル \ aとして解釈されます \.

C#では、逐語的な文字列を使用して同じ動作を得ることができます

@"MMM d \'yy 'at' H:mmm"

C#では、バックスラッシュには意味があります( nはnewline tタブ....)。したがって、backlslahs自体はエスケープキャラクターです - 脱出しなければなりません:)または文字列の前に座っている - これは「非逃げられた文字列」(通常はパスに使用される)を作ります

C#で逃げます。あなたのテキストは、「H:MMM」で「mmm d 'yy」になります。文字列のキャラクターを逃れる必要はありません。一方、「文字列に文字列に載っている」場合は、 "h:mmm"で文字列「mmm d "yy " at "yy "を終わらせないように脱出する必要があります。または、 @""文字列メソッドを使用することもできます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top