Dar*_*rcy 7 javascript replace
我有一个文本框,它将信息发布到服务器,它是JSON格式的.假设我想为值输入两个引号,JSON结构看起来像:
{
"test": """"
}
Run Code Online (Sandbox Code Playgroud)
我需要它看起来像:
{
"test": "\"\""
}
Run Code Online (Sandbox Code Playgroud)
所以它将遵循JSON标准,并且可以是可解析/可字符化的.
我试过用
var val = myVal.replace('"', "\\\"");
Run Code Online (Sandbox Code Playgroud)
但这没用.val最终只有一个转义报价,所以\""任何帮助非常感谢!
我的答案做了一些假设,因为我必须填写你问题中相当大的空白:
如果我做对了,那就继续......
所以,对于一些占位符,你正在做:
function get_contents_of_textbox() {
// Dummy data for example
return 'My mum pushed and I said "Hello World"!';
}
function send_to_server(json_str) {
// Dummy action: display JSON string
console.log(json_str);
}
var myVal = get_contents_of_textbox();
var JSON = '{ "test": "' + myVal + '" }';
send_to_server(JSON);
Run Code Online (Sandbox Code Playgroud)
要确保它JSON有效,请转义它可能包含的任何引号和反斜杠.你已经放弃了:
myVal = myVal.replace('"', "\\\"");
Run Code Online (Sandbox Code Playgroud)
和您尝试的结果是:
{ "test": "My mum pushed and I said \"Hello World"!" }
Run Code Online (Sandbox Code Playgroud)
只有第一个报价已被转义.这是因为默认情况下只替换搜索字符串的一个实例.
Mozilla文档说:
要执行全局搜索和替换,请在正则表达式中包含g标志,或者如果第一个参数是字符串,请在flags参数中包含g.
不幸的是,flags参数是非标准的,所以让我们切换到正则表达式版本replace,并使用其中的/g开关:
myVal = myVal.replace(/"/g, '\\"');
Run Code Online (Sandbox Code Playgroud)
(为了简洁,你会注意到我也缩小了替换字符串.)
结果:
{ "test": "My mum pushed and I said \"Hello World\"!" }
Run Code Online (Sandbox Code Playgroud)
让我们也添加逻辑来逃避反斜杠,我们最终得到这个:
function get_contents_of_textbox() {
// Dummy data for example
return 'My mum pushed [a back\\slash] and I said "Hello World"!';
}
function send_to_server(json_str) {
// Dummy action: display JSON string
console.log(json_str);
}
var myVal = get_contents_of_textbox();
myVal = myVal.replace(/\\/g, '\\\\'); // escape backslashes
myVal = myVal.replace(/"/g, '\\"'); // escape quotes
var JSON = '{ "test": "' + myVal + '" }';
send_to_server(JSON);
Run Code Online (Sandbox Code Playgroud)
结果:
{ "test": "My mum pushed [a back\\slash] and I said \"Hello World\"!" }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32525 次 |
| 最近记录: |