10

初心者の質問はご容赦ください:)

string S="abc";
S+="\";

準拠しません。

string S="abc";
S+="\\";

S ="abc\\"になります

S = "abc \"を作成するにはどうすればよいですか?

4

8 に答える 8

16

2番目のコード@"\"必要なもの(または他の人が提案している逐語的な文字列リテラル)であり、バックスラッシュを1つだけ追加します。コンソールに印刷すると表示されます。

これらの2つのコード:

S += "\\";

S += @"\";

まったく同じです。どちらの場合も、1つの円記号が追加されます1

バックスラッシュ(およびその他の文字)をエスケープするデバッガービューに混乱しているのではないかと思います。デバッガーを使用しても、を確認することで検証できS.Lengthます。これは、5ではなく4であることがわかります。


1既存の文字列のデータは変更されませんが、の値を設定して、末尾に円記号が付いた元の文字列で構成される新しいS文字列を参照することに注意してください。.NETの文字列オブジェクトは不変ですが、それはまったく別のトピックです...

于 2013-02-15T13:19:40.463 に答える
5

これを試して:

String S = "abc";
S += @"\";

@=逐語的な文字列リテラル

http://msdn.microsoft.com/en-us/library/aa691090%28v=vs.71%29.aspx

http://msdn.microsoft.com/en-us/library/vstudio/362314fe.aspx

于 2013-02-15T13:19:26.970 に答える
4
string S = "abs" + "\\";  

べきであり、結果はabc\です。

おそらく表示されているのは、デバッガー/インテリセンスが文字列を視覚化する方法です。文字列をコンソールに出力するか、テキストボックスに表示してみてください。

于 2013-02-15T13:20:49.127 に答える
2

あなたはすでに解決策を持っています。abc\\デバッグ中に表示される理由は、VSがバックスラッシュをエスケープし、の値をSコンソールウィンドウに出力すると、が表示されるためabc\です。@文字列リテラルの先頭にを追加できます。例:

string S="abc";
S+= @"\";

これは同じことを達成します。

于 2013-02-15T13:19:46.543 に答える
2

@文字を使用してバックスラッシュをエスケープできます。

string S="abc";
S += @"\";

しかし、これは2番目の例で書いたことを正確に達成します。これに関する混乱は、ソース文字列に円記号が1つしか含まれていない場合でも、VisualStudioデバッガーがこれらの文字をエスケープし続けるという事実に起因しています。

于 2013-02-15T13:20:07.470 に答える
1

あなたの2番目の例は完全に問題ありません

string S="abc";
S+="\\";

Visual Studio では文字列がエスケープされて表示されるため、結果文字列に 2 つのスラッシュが表示されます。このようなエスケープ宣言文字列を使用したくない場合

@"\"

コンパイラはエスケープ記号の後に文字を期待しているため、これはコンパイルされていません

string S="abc";
S+="\";
于 2013-02-15T13:22:25.860 に答える
0
string S="abc";
S+="\\";
Console.WriteLine(S); // This is what you're missing ;)

文字列がまったく間違っていないことがわかります。

バックスラッシュ ( ) はエスケープ文字であり、文字を表す、または基本的に文字を与える\など、通常は文字列に挿入できない特殊文字を取得できます。"\r\n"NewLine"\"""

キャラクターを取得するには、正確に何をしているのか、何をしたいのかを\入力する必要があります。"\\"

verbatim( @) を使用すると、すべての出現箇所が\into\\に置き換えられ@"\" == "\\"ます。これは通常、多数のリテラル\が必要なパスと正規表現に使用されます。と言う方がやっぱり@"C:\MyDirectory\MyFile"気持ちいいです。"C:\\MyDirectory\\MyFile"

于 2013-02-15T13:26:15.447 に答える
-2

これを試して

 string s="abc";
 s = s+"\\";
于 2013-02-15T13:23:27.887 に答える