Как я могу перевернуть строку в Notepad ++?


12

Можно ли перевернуть одну строку в Notepad ++?

Пример:

Hello world

Изменится на

dlrow olleH

Должен ли я установить плагин для такой функциональности?

ОБНОВЛЕНИЕ : я хотел бы сохранить буфер обмена в его первоначальном состоянии. Таким образом, [copy] - [external transform] - [paste] не подходит.

Кроме того, я хотел бы остаться в автономной среде рабочего стола, поэтому любое решение для онлайн-обслуживания не подходит.

Ответы:


6

Вы можете выполнить итеративный поиск и заменить, чтобы перевернуть строку, после того как вы пометили начало строки специальным символом (я использую знак процента% в примере)

поиск: (%)(.*)(.)

заменить: \3\1\2

включить "регулярные выражения" в поиске и замене.

повторяйте операцию, пока строка не перевернется.


2
Это может быть утомительно для длинной очереди, но это довольно хорошее решение, поскольку оно все еще «внутри» АЭС.
Рон Кляйн

3

ОБНОВЛЕНИЕ: я добавил Python-3 сценарий «реверса буфера обмена».
Этот скрипт Python-3 обслуживает текст Unicode; то есть. весь текст ...

# original # Ĥĕłłō ŵōŗłđ in Unicode  
# reversed # edocinU ni đłŗōŵ ōłłĕĤ  

Поскольку ни одно интегрированное решение не было представлено (пока), я упомяну обходной путь Unix-tools.

Загрузите утилиты, упомянутые в источнике (ниже), и поместите их в папку PATH'd.
Вставьте код (ниже) в файл .cmd и назовите его как угодно. (это, конечно, должно быть в папке PATH'd).
Создайте ярлык Windows для .cmd (поместите его где-нибудь в StartMenu и установите для него минимизированный запуск) ... и назначьте ему горячую клавишу быстрого доступа.

Затем вы можете просто скопировать текст по вашему выбору в буфер обмена и нажать горячую клавишу ... Готово! .. перевернутый текст заменяет выделенный текст.

Если вы предпочитаете, вы можете настроить макрос NotePad ++ для выделения и копирования всей строки .. (обратите внимание на символы новой строки в конце текста.

Также, как указано в примечаниях источника. Это работает для однобайтовых наборов символов.

sed.exeможет быть в состоянии обработать Unicode, но я еще не совсем решил этот вопрос ... Если вам случится знать, как это сделать, пожалуйста, опубликуйте информацию, здесь или, возможно, в моем сообщении о конкретной проблеме по этой проблеме : can-gnu-sed-for-windows-handle-unicode

Это sed.exeверсия:

@echo off
  ::==============================================::
  :: FUNCTION: Reverse the text in the clipboard. ::
  ::    8-bit characters only (ANSI).             ::
  :: It removes all \r and \n characters, because ::
  :: because sed.exe adds a trailing line-feed    ::
  :: Four `NIX utilities are used.                ::
  ::    2 gclip.exe  (GNU)                        ::
  ::    1 pclip.exe  (GNU)                        ::
  ::    3 gsed.exe   (GNU)                        ::
  ::    4 tr.exe (is `NIX, but maybe not GNU)     ::
  ::==============================================:: 
  >   "%temp%\%n0.sed" echo /\n/!G
  >>  "%temp%\%n0.sed" echo s/\(.\)\(.*\n\)/^&\2\1/
  >>  "%temp%\%n0.sed" echo //D
  >>  "%temp%\%n0.sed" echo s/.//
  pclip.exe | sed.exe -f "%temp%\%n0.sed" | tr.exe -d "\r\n" | gclip.exe  
  del "%temp%\%n0.sed"
goto :eof  

Вот Python-3версия:

##==============================================##
## FUNCTION: Reverse the text in the clipboard. ##
##           The text is handled as unicode.    ##
## Using Python-3.1.2                           ##
##  with Python-Win32-extensions for Python-3.1 ##
##==============================================##
import win32clipboard as w
w.OpenClipboard() 
## CF_UNICODETEXT == 13
s=w.GetClipboardData(13)
w.SetClipboardData(13,s[::-1]) 
w.CloseClipboard() 

Прекрасно работает с Python 2.5 на Windows, а также. Сладкий!
Деннис

Это меняет состояние буфера обмена. Я хотел бы избежать этого. Однако, если это сработает, я мог бы принять это.
Рон Кляйн

2

Если вам не нужно делать это так часто, вы можете скопировать строку в этот онлайн-инструмент для изменения.


Хорошая идея, но суть в том, чтобы продолжать работать в среде Notepad ++, а не переходить на какой-либо внешний ресурс (браузер).
Рон Кляйн

Инструмент находится в автономном режиме, к сожалению,
Antonio

2

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

Sub ReverseText()
    Cells(Selection.Row, Selection.Column + 1) = StrReverse(Selection.Value)
End Sub

Если вы собираетесь использовать эту функцию регулярно, назначьте макрос кнопке на панели инструментов для быстрого доступа. Скопируйте текст в любую ячейку. Убедитесь, что ячейка выбрана, и запустите макрос. Скопируйте сгенерированный текст обратно в Блокнот ++.

Удивительно, что эта простая функция недоступна ни в Notepad ++, ни в виде плагинов TextFX.


1

В плагине BinHex версии 2.0 для Notepad ++ реализована функция перестановки строк.

Вы можете пометить строку, которая должна быть обратной, и нажать Ctrl+ R.


0

Расширение идеи gor, если длина вашей строки меньше десяти символов:
Создайте макрос этого.
Выделите нужную область в N ++

поиск:

(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?)

заменить:

\9\8\7\6\5\4\3\2\1

заменить в выборе: проверено

N ++ поддерживает только десять групп, так что это все, что вы получаете, но, по крайней мере, он делает десять букв одновременно.

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


0
  1. Выберите текст для реверса.
  2. Разбейте его на несколько строк, используя окно «Заменить» с выбором «В» и выбрав Регулярное выражение, чтобы заменить все (.) На \ n \ 1
  3. Выделите текст еще раз (по какой-то причине последний символ остается вне выделения после шага 2).
  4. Используйте ответ на Обратный порядок строк в Notepad ++, чтобы повернуть строки.
  5. Перекомбинируйте строки, используя окно «Заменить» с выделенным «В» и «Расширенное», чтобы заменить все \ n пустой строкой.
  6. Возможно, вам придется удалить посторонние переводы строк.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.