2017-03-03 147 views
0

我已经在javascript中创建了一个示例数据生成器,并且输出是一个被串化的json对象。现在我需要从输出中的每个元素中删除第一个/最后一个反斜杠。删除第一个和最后一个反斜杠?

电流输出是:

array(\"'This is' a test\",\"Testie Test\",\"Bob the tester\",\"Wanna test "some" more\") 

输出需要:

array("'This is' a test","Testie Test","Bob the tester","Wanna test \"some\" more") 

我需要的是双引号进行转义文本,但我需要的数据是除去第一和最后一个反斜杠然后复制并上传到另一个工具,并用这些反斜杠打破。

我可以很容易地删除所有的反斜线用一个简单的正则表达式:

var = var.replace(/\\\\/g,"") 

然而然后里面的文本不再被转义。我尝试过更复杂的正则表达式来完成这个任务,但没有成功。任何帮助表示赞赏。

感谢

+2

为什么要删除所有反斜杠? JSON使用反斜杠编码文本以避免引号。 –

+0

什么是原始的JSON?格式为'{“name”:value,...}' –

+0

@BitByte因为第一个/最后一个反斜杠打破了使用这个示例数据的第二个工具。在我可以创建第二个工具的Web服务之前,这是一个必要的步骤。 – jp17

回答

0

尝试使用JSON.parse(object)。它应该返回被解析的整个对象。

此外,console.log(JSON.parse(object)["data"])应该将整个值作为数组打印。

根据您的意见,考虑到JSON格式为这样:{"records": [{"id":"xxxx", "data":["text","text","text",...]},{"id":"xxx", "data":[ ..... ]},...]}

var parsed = JSON.parse(object); 
var output = [] 
for (var i = 0; parsed["records"].length < i; i++) { 
    output.push(parsed["records"][i]["data"]); 
} 
document.getElementById("textareafieldid").value = output; 

请务必设置文本框的ID在脚本的HTML定义相同。

<textarea id='textareafieldid'></textarea> 
+0

输出转到Web应用程序中的textarea字段而非控​​制台。道歉我是新来的JavaScript和我没有输出时,试图这 – jp17

+0

这是浏览器的JavaScript?没有运行节点或任何东西? –

+0

是的正确...我参与了项目,并在重写过程中的PHP和创建一个Web服务,但需要解决这个问题,因为它经常使用 – jp17

1

^(\\.)*(\\).$将最后一个字符前右匹配第一个反斜杠和反斜杠。

取而代之的正则表达式,你可以,如果你的字符串以一个\"结束了\"直接测试:

if (s.startsWith('\\"') && s.endsWith('\\"')) { 
    clean_s = '"' + s.substr(2, s.length-4) + '"'; 
} 
1

您可以使用此正则表达式来匹配你的字符串:

^\\(.*)\\(")$ 

第一个捕获组将捕获除起始反斜线整个字符串,但它不会捕捉到最后qoutes。最后的qoutes将在第2组中捕获。您可以连接这两个组以获得所需的输出!

Regex Demo

相关问题