「奇妙な」文字、または言語
にとって重要な文字を返すことが可能かどうかを知りたいです。たとえば、 \ ; '
テキスト キーの Unicode 値をチェックし、数字で文字を返す 1 つの関数でそれらを返す必要があるため、これらも必要であることを知りたいです。
356|error: missing terminating ' character
行 356 は次のようになります
return '\';
アイデア?
バックスラッシュは、特殊文字のエスケープです。文字通りの円記号が必要な場合は、別の円記号でエスケープする必要があります。試す:
return '\\';
ここでの唯一の問題は、リテラル内の文字をエスケープするためにバックスラッシュが使用されていることです。たとえば\n
、改行、\t
水平タブです。あなたの場合、コンパイラは\'
あなたが文字を意味していることを見て考えています'
(これは、その'
ような文字を持つことができるようにするためです: '\''
)。バックスラッシュをエスケープするだけです:
return '\\';
これは 2 文字の文字リテラルのように見えますが、そうではありません。\\
単一のバックスラッシュを表すエスケープ シーケンスです。
同様に、 a を返すには'
、次のようにします。
return '\'';
利用可能なエスケープ シーケンスのリストを表 7 に示します。
実行文字セットの任意の文字を含む文字リテラルを持つことができ、結果char
にはその文字の値が含まれます。ただし、値が a に収まらない場合は、char
実装定義の値になります。
任意の文字を返すことができます。
ただし、それらの一部については、 : を使用してエスケープする必要がありbackslash
ます\
。
したがって、バックスラッシュを返すには、次を返す必要があります。
return '\\';
単純なバックスラッシュを取得するには、 を使用します'\\'
。
C では、次の文字はバックスラッシュを使用して表されます。
単純なバックスラッシュは、後ろに文字が続くことを期待するため、システムを混乱させます。したがって、それを「エスケープ」する必要があります。8 進数/16 進数のビット パターンは、最初はあまり役に立たないように見えるかもしれませんが、ANSI エスケープ コードを使用できます。
上記のように、バックスラッシュに続く文字が正当なエスケープ シーケンスを指定していない場合、結果は実装で定義されますが、多くの場合、バックスラッシュに続く文字は、あたかもエスケープが存在しないかのように文字どおりに解釈されます。
そのような文字 ("、'、\、{、]... など) を複数回返す必要がある場合は、その文字をエスケープする関数を作成する必要があります。
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("\'"{[}]");
機能を改善する必要があります。それは私にとってはうまくいきましたが、すべての特殊文字をエスケープしているわけではありません。