4

У меня есть текст с перевернутыми скобками. Например, вместо (text-in-parentheses) меня есть )text-in-parentheses(

Есть ли простой способ перевернуть все скобки в тексте? Если так, то как?

Обновление: это простой текстовый файл, каждая скобка переворачивается. Я использую Windows 7.

2 ответа2

6

Powershell

Короткие версии

(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 в качестве специального индикатора (например, такая же ситуация возникает при использовании зеленых экранов и ношении зеленой одежды).

3

Я уверен, что есть одношаговые способы сделать это, но быстрый способ состоит в том, чтобы переключить всех паренов на уникальных персонажей, таких как ^, затем переключить всех паренов на правильных паренов, затем переключить специальный символ к противостоящему парню.

Например, в блокноте:

  1. Заменить все (с ^
  2. Заменить все) на (
  3. Заменить все ^ на)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .