翻转括号

翻转括号

我有一些带翻转括号的文本。例如,(text-in-parentheses)我有)text-in-parentheses(

有没有简单的方法可以翻转文本中的所有括号?如果有,怎么做?

更新:这是一个纯文本文件,每个括号都翻转了。我使用的是 Windows 7。

答案1

电源外壳

简短版本

(Get-Content "in.txt" -raw) -replace "\(", "`0)" -replace "\)", "(" -replace "(`0\()", ")" >> "out.txt"

也可能:

Set-Content "out.txt" ((Get-Content "in.txt" -raw) -replace "\(", "`0)" -replace "\)", "(" -replace "(`0\()", ")")
  • 阅读in.txt
  • 写入out.txt(在第一个代码示例中水平滚动才能看到行尾)

长版本

$in = "in.txt";
$out = "out.txt";

(Get-Content $in -raw) -replace "\(", "`0)" -replace "\)", "(" -replace "(`0\()", ")" >> $out

也可能:

Set-Content $out ((Get-Content $in -raw) -replace "\(", "`0)" -replace "\)", "(" -replace "(`0\()", ")")

解释

请暂时忽略神秘的反斜杠 - 它们仅适用于转义在正则表达式中具有特殊含义的括号。

我们首先用(NUL)参见NUL 字符)。然后,我们用 替换每一个)(最后一步,NUL(被 重新替换)

使用这种方式,我们确保不会进行“双重替换”,例如:

Initial string value:
(test)

After replacing "(" by ")"
)test)

After replacing ")" by "("
(test(

警告

文件本身不能包含序列NUL)。这会导致对我的 Powershell 脚本的误解,因为我使用 NUL 字符作为特殊指示符(例如,使用绿屏并穿着绿色的衣服)。

答案2

我确信有单步方法可以做到这一点,但一种快速的方法是将一个括号的全部切换为一个唯一字符,如 ^,然后将所有其他括号切换为正确的括号,然后将特殊字符切换为相反的括号。

例如在记事本中:

  1. 将所有 ( 替换为 ^
  2. 将所有 ) 替换为 (
  3. 将所有 ^ 替换为 )

相关内容