我有一个包含{
和}
的字符串,如何取出所有这些字符串并将其反转,以便所有{
成为}
和}
{
?
我不能这样做:
str = str.replace("}", "{");
str = str.replace("{", "}");
因为这会使 A 与 B 的方式相同,然后它将取代 B ,这将全部改变为相同的方向。
我试过这样做:
str = str.replace(["{", "}"], ["}", "{"]);
但这似乎没有做任何事情(甚至没有错误)。
那么,我可以做些什么来反转它们呢?
答案 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(",", "}");