10

重複の可能性:
`?`をエスケープできるようにする理由は何ですか?

私がこれを行うことができれば:

string i = "'";

なぜこれを行うのですか?

string i = "\'";
4

7 に答える 7

11

文字リテラルが必要な場合に必要です。

char apos = '\'';
于 2012-12-17T08:51:14.580 に答える
6

'charが必要な場合は、次のように入力します。

char c = '\'';
于 2012-12-17T08:52:11.867 に答える
3

文字定数と文字列リテラルの一貫性のためだけだと思います。

この言語で、単一のアポストロフィを含む文字列リテラルを、として"'"ではなくとして記述する必要"\'"があり、二重引用符を含む文字定数をとして'"'ではなくとして記述する必要がありまし'\"'た。(そしてもちろん"'"'"'両方とも完全に有効です。)

'文字列リテラルでのエスケープ、および文字定数でのエスケープを許可するが、必須ではないため"、言語が少し柔軟になり、文字列リテラルと文字定数で同じエスケープのセットを使用できるようになり、特に害はありません。

どちらの形式を使用する必要があるのか​​については、それはあなた次第です。使いやすいフォームを使用してください。

于 2012-12-17T09:25:11.133 に答える
1

Kerrekが言ったように、評価された文字ではなくリテラル文字が必要な場合は、文字をエスケープします。たとえば、「\」または正規表現内のリテラル括弧。これにより、インタープリターはエスケープ文字を実際の文字値以外のものとして評価しなくなります。

于 2012-12-17T08:55:32.690 に答える
1

サーバーサイドからアンカーのhtmlを生成したい場合は、明らかに以下のようなstring.formatを使用するとします...

  X = string.Format("<a href=\"tel:{0}\" onclick=\"Javascript: goog_report_conversion({1}); return false;\">{0}</a>", displayText, sRegPhone);

アンカーの関数呼び出しとhrefには二重引用符が必要ですが、ステートメントのサーバーで以下のように使用するとエラーになります。

  "<a href="tel:{0}""></a>

したがって、これを克服するために、エスケープシーケンスを使用します。これは、サーバー側で\の次のリテラルをエスケープします(考慮しません)が、出力領域またはクライアント側でスキップされたリテラルと一緒に生成します...以下のように

<a onclick="Javascript: goog_report_conversion(2818669180); return false;" href="tel:(281) 866-9180">(281) 866-9180</a>

そのため、ほとんどの場合、次の文字をエスケープするために使用されます......

于 2012-12-17T11:34:09.970 に答える
0

平易な英語では、言語の作者はコードをコンパイルするためにいくつかの特殊文字を使用しなければならなかったと言うことができます

したがって、プログラマーがこの文字を使用できるようにするために、「/」を使用する方法を使用しました。

ほとんどすべての言語で普及しています

于 2012-12-17T10:29:51.080 に答える
0

これ\は、「特殊文字」をエスケープするために使用される文字です。どういう意味ですか?

これは、パーサーが特定のキャラクターに遭遇したときに魔法のようなことをすることを意味します。これらの魔法のようなものは、構文解析中の状態の変化です。状態変化は次のようなものです。文字列リテラルを入力し、次の行に移動し、文字定数を残します。

'\'文字は、先行する文字の魔法の意味を抑制するために選択されました。したがって、\行の終わりにあるaはその意味を抑制し、たとえば、エディター内の複数の行にマクロを作成できるようにしますが、プリプロセッサーでは1つの語彙素と見なされます(プリプロセッサーは新しい行を区切り文字として使用します) 。

aの前にa"を付ける\と、文字列リテラルの開始または終了の意味が抑制されます。これは。と同じ'です。

\また、先行する非魔法キャラクターのみが無視されることも召集されました(魔法がない場合は魔法を抑制できません)。したがって、「\'」と書くのは問題ありません。は'文字列リテラル内で魔法の意味を持たず、エスケープは単に無視されます。文字列リテラル内の任意の文字の前に問題なく付けることができます(もちろん、数字、および8進数、10進数、16進数の文字\を除く)。x

于 2012-12-17T11:32:31.773 に答える