私は文字列値a\bc
を変数に保持しているとします。"a\\bc"
のようなコードで文字列に変換するにはどうすればよいですか?文字列にタブ、スラッシュ、改行などが含まれている可能性がありますJavaScriptの文字列値をコード内の文字列に変換するにはどうすればよいですか?
いくつかのブラウザにはJSON.stringify
メソッドがあり、そこにはJSON2というコードが含まれていますが、私はちょうどそのコードを最小限必要としたいだけです文字列の場合。
私は文字列値a\bc
を変数に保持しているとします。"a\\bc"
のようなコードで文字列に変換するにはどうすればよいですか?文字列にタブ、スラッシュ、改行などが含まれている可能性がありますJavaScriptの文字列値をコード内の文字列に変換するにはどうすればよいですか?
いくつかのブラウザにはJSON.stringify
メソッドがあり、そこにはJSON2というコードが含まれていますが、私はちょうどそのコードを最小限必要としたいだけです文字列の場合。
は時期尚早の最適化のようですね。パフォーマンスに問題がない限り、私はJSON.stringify
と書いて、エンコードする方法を理解する必要はありません。彼らは\n, \r, \t or quotes
のように可能なすべてのものをコードしていないので、ここでの回答の
どれもここで何が必要ないことjson.orgからのコードの露骨なコピーですが、十分ではありません。 http://jsfiddle.net/mendesjuan/rFCwF/
function quote(string) {
var escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
var meta = { // table of character substitutions
'\b': '\\b',
'\t': '\\t',
'\n': '\\n',
'\f': '\\f',
'\r': '\\r',
'"' : '\\"',
'\\': '\\\\'
}
// If the string contains no control characters, no quote characters, and no
// backslash characters, then we can safely slap some quotes around it.
// Otherwise we must also replace the offending characters with safe escape
// sequences.
escapable.lastIndex = 0;
return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
var c = meta[a];
return typeof c === 'string' ? c :
'\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
}) + '"' : '"' + string + '"';
}
ありがとう。 JSON.stringifyを使わないでスクリプトが動作するかもしれないので、私はコードの実装を文字列に埋め込むことを試みています。 –
あなただけのスラッシュをエスケープ引用符を追加したい場合は、次の
str = ['"', str.replace(/\\/g, '\\\\'), '"'].join('');
ああ、私は外側の引用符を忘れていました。 +1 – RightSaidFred
デフォルトの振る舞いは、COMMONで結合することです –
@JuanMendes:うん、それはすでに固定されていることに気づきました:) –
あなたはこのしてみてください、あなたの文字列を「エスケープ」する安全な方法が必要な場合:これは内部escape
機能を使用しています
escape(str).replace(/%/g, '\\x')
を、そして、-stringに%-urlエスケープ形式を変換し、エスケープ形式。
私は当初はうまくいかないと思っていましたが、それはあります。引用符で囲むだけです。唯一の問題は、エンコードが多すぎることです。 OPがパフォーマンスに関心を持っているように見えるので、文字列を2回(エスケープと置き換え)すると、あまりにも多くの作業のように思えるでしょう。 .replace(/%/ g、 '\\ x'); //出力: 「こんにちは\ x20world \ x20 \ x25 \ x20」というエスケープ(「Hello world%&= '' \ n \ t \」] \ x26 \ x20 \ x3 \ x20 \ x27 \ x27 \ x20 \ x0A \ x20 \ x09 \ x20 \ x22 \ x20 \ x5D \ x20 " –
任意のJavascript文字列をJSON文字列値に変換しますか?または、バックスラッシュとその他の文字だけをエスケープしたいですか?前/後の例をもっと与える。 –
I arbitray JavaScript文字列をJSON文字列値に変換する方法を教えてください。 –