Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从{到}反转大括号,反之亦然_Javascript - Fatal编程技术网

Javascript 从{到}反转大括号,反之亦然

Javascript 从{到}反转大括号,反之亦然,javascript,Javascript,我有一个带有{和}的字符串,我怎样才能把它们全部取下来并反转,这样所有{都变成}和}变成{ 我不能这样做: str = str.replace("}", "{"); str = str.replace("{", "}"); 因为这将使A与B朝向相同的方向,因此它将取代B,这将使它们朝向相同的方向 我试着这样做: str = str.replace(["{", "}"], ["}", "{"]); 但这似乎没有任何作用(甚至没有出错) 那么,我可以做些什么来反转它们呢?您可以使用一个临时字符串

我有一个带有
{
}
的字符串,我怎样才能把它们全部取下来并反转,这样所有
{
都变成
}
}
变成
{

我不能这样做:

str = str.replace("}", "{");
str = str.replace("{", "}");
因为这将使AB朝向相同的方向,因此它将取代B,这将使它们朝向相同的方向

我试着这样做:

str = str.replace(["{", "}"], ["}", "{"]);
但这似乎没有任何作用(甚至没有出错)


那么,我可以做些什么来反转它们呢?

您可以使用一个临时字符串,该字符串在进行交换时肯定是唯一的:

str = str.replace("}", "TEMP_HOLDER");
str = str.replace("{", "}");
str = str.replace("TEMP_HOLDER", "{");

但是,如果字符串包含临时字符串,并且它也不能替换多个匹配项,则很容易出现错误。我建议使用Erik的。

您需要在第一次转换时转换为其他内容,然后在进行其他转换后再转换为所需内容

str = str.replace("{", "_###_");
str = str.replace("}", "{");
str = str.replace("_###_", "}");

当然,“其他内容”必须是字符串中不包含的内容。如果确定字符串中不包含换行符,则可以使用“\r\n”。

可以使用带有回调函数的regexp来解决此问题:

str.replace(/\{|\}/g, function(match) {
    return match == "}" ? "{" : "}";
});

您可以采用两阶段解决方案:

str = str.replace("}", "~");
str = str.replace("{", ",");

str = str.replace("~", "{");
str = str.replace(",", "}");

这是最好的答案。使用临时字符串容易出现错误。由于使用了“g”修改器,这也会多次替换