2

「奇妙な」文字、または言語
にとって重要な文字を返すことが可能かどうかを知りたいです。たとえば、 \ ; '
テキスト キーの Unicode 値をチェックし、数字で文字を返す 1 つの関数でそれらを返す必要があるため、これらも必要であることを知りたいです。
356|error: missing terminating ' character
行 356 は次のようになります

return '\';

アイデア?

4

5 に答える 5

5

バックスラッシュは、特殊文字のエスケープです。文字通りの円記号が必要な場合は、別の円記号でエスケープする必要があります。試す:

return '\\';
于 2013-02-25T17:14:18.560 に答える
4

ここでの唯一の問題は、リテラル内の文字をエスケープするためにバックスラッシュが使用されていることです。たとえば\n、改行、\t水平タブです。あなたの場合、コンパイラは\'あなたが文字を意味していることを見て考えています'(これは、その'ような文字を持つことができるようにするためです: '\'')。バックスラッシュをエスケープするだけです:

return '\\';

これは 2 文字の文字リテラルのように見えますが、そうではありません。\\単一のバックスラッシュを表すエスケープ シーケンスです。

同様に、 a を返すには'、次のようにします。

return '\'';

利用可能なエスケープ シーケンスのリストを表 7 に示します。

ここに画像の説明を入力

実行文字セットの任意の文字を含む文字リテラルを持つことができ、結果charにはその文字の値が含まれます。ただし、値が a に収まらない場合は、char実装定義の値になります。

于 2013-02-25T17:16:26.493 に答える
1

任意の文字を返すことができます。

ただし、それらの一部については、 : を使用してエスケープする必要がありbackslashます\

したがって、バックスラッシュを返すには、次を返す必要があります。

return '\\';
于 2013-02-25T17:16:40.520 に答える
0

単純なバックスラッシュを取得するには、 を使用します'\\'

C では、次の文字はバックスラッシュを使用して表されます。

  • \a または \A : ベル
  • \b または \B : バックスペース
  • \f または \F : 改ページ
  • \n または \N : 改行
  • \r または \R : キャリッジ リターン
  • \t または \T : 水平タブ
  • \v または \V : 垂直タブ
  • \xhh または \Xhh : 16 進数のビット パターン
  • \ooo : 8 進数のビット パターン
  • \0 : ヌル文字
  • \" : キャラクター
  • \' : キャラクター
  • \\ : バックスラッシュ (\)

単純なバックスラッシュは、後ろに文字が続くことを期待するため、システムを混乱させます。したがって、それを「エスケープ」する必要があります。8 進数/16 進数のビット パターンは、最初はあまり役に立たないように見えるかもしれませんが、ANSI エスケープ コードを使用できます。

上記のように、バックスラッシュに続く文字が正当なエスケープ シーケンスを指定していない場合、結果は実装で定義されますが、多くの場合、バックスラッシュに続く文字は、あたかもエスケープが存在しないかのように文字どおりに解釈されます。

于 2013-02-25T17:21:15.653 に答える
0

そのような文字 ("、'、\、{、]... など) を複数回返す必要がある場合は、その文字をエスケープする関数を作成する必要があります。

function  EscapeSpecialChars (_data) {
            try {
                if (!GUI_HELPER.NOU(_data)) {
                    return _data;
                }
                if (typeof (_data) != typeof (Array)) {
                    return _data;
                }
                while (_data.indexOf("
") > 0) {
                    _data = _data.replace("
", "");
                }
                while (_data.indexOf("\n") > 0) {
                    _data = _data.replace("\n", "\\n");
                }
                while (_data.indexOf("\r") > 0) {
                    _data = _data.replace("\r", "\\r");
                }
                while (_data.indexOf("\t") > 0) {
                    _data = _data.replace("\t", "\\t");
                }
                while (_data.indexOf("\b") > 0) {
                    _data = _data.replace("\b", "\\b");
                }
                while (_data.indexOf("\f") > 0) {
                    _data = _data.replace("\f", "\\f");
                }
                return _data;
            } catch (err) {
               alert(err);
            }

        },

次に、次のように使用します。

return EscapeSpecialChars("\'"{[}]");

機能を改善する必要があります。それは私にとってはうまくいきましたが、すべての特殊文字をエスケープしているわけではありません。

于 2013-02-25T17:24:42.947 に答える