从{到}反转支撑,反之亦然

时间:2015-04-12 19:08:07

标签: javascript

我有一个包含{}的字符串,如何取出所有这些字符串并将其反转,以便所有{成为}} {

我不能这样做:

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

因为这会使 A B 的方式相同,然后它将取代 B ,这将全部改变为相同的方向。

我试过这样做:

str = str.replace(["{", "}"], ["}", "{"]);

但这似乎没有做任何事情(甚至没有错误)。

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

4 个答案:

答案 0 :(得分:12)

您可以使用带回调函数的正则表达式来解决此问题:

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

答案 1 :(得分:6)

您可以使用一个绝对唯一的临时字符串来进行交换:

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

但如果字符串包含临时字符串并且它也不会替换多个匹配项,那么它很容易出错。我建议使用Erik' answer

答案 2 :(得分:1)

您需要在第一次传递中转换为其他内容,然后在您进行其他转换后转换为您想要的内容。

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

当然,别的东西需要一些不会在你的字符串中存在的东西。您可以使用" \ r \ n"如果你确定你的字符串不会包含换行符。

答案 3 :(得分:-1)

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

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

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