如何在Notepad ++中反转行?


12

是否可以在Notepad ++中反转一行?

例:

Hello world

将更改为

dlrow olleH

我应该安装用于此类功能的插件吗?

更新:我想将剪贴板保持其原始状态。因此[copy]-[external transform]-[paste]不适合。

另外,我想留在一个断开连接的桌面环境中,因此任何在线服务解决方案都不适合。

Answers:


6

在用特殊字符标记字符串的开头之后,可以进行迭代搜索并替换以反转字符串(在示例中,我使用百分号%)

搜索: (%)(.*)(.)

更换: \3\1\2

在搜索和替换中启用“正则表达式”。

重复该操作,直到字符串反转为止。


2
这可能需要很长时间才能用尽,但这是一个很好的解决方案,因为它仍然在NPP环境中。
罗恩·克莱因

3

更新:我添加了一个Python-3“反转剪贴板文本”脚本。
该Python-3脚本可处理Unicode文本;即。所有文字...

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

由于尚未提出集成解决方案,因此,我将介绍Unix工具的解决方法。

下载源代码中提到的实用程序(如下),并将其放入PATH文件夹中。
将下面的代码弹出到一个.cmd文件中,然后随意命名。(当然,它必须位于PATH文件夹中)。
创建.cmd的Windows快捷方式(将其放在您的StartMenu中的某个位置,并将其设置为最小化运行)...并为其配置快捷方式-热键。

然后,您只需将您选择的文本复制到剪贴板,然后按热键即可。..颠倒的文本替换所选的文本。

如果愿意,可以设置NotePad ++宏以选择并复制整行。(请在文本末尾注意换行符。)

另外,如原始说明中所述。这适用于单字节字符集。

sed.exe也许可以处理Unicode,但是我还没有完全解决这个问题...如果您碰巧知道如何做到这一点,请在此处发布信息,或者在我发布的特定问题中发布此信息。 :可以为Windows处理通用代码添加sed

这是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() 

在Windows上也非常适合python 2.5。甜!
丹尼斯2010年

这将更改剪贴板的状态。我想避免这种情况。但是,如果可行,我可以接受。
罗恩·克莱因


2

我意识到这使用了另一种工具,但是您可以在Excel中反转文本,然后将其复制回去。创建电子表格并添加此宏:

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

如果您打算定期使用此功能,请将宏分配给工具栏上的按钮以方便访问。将一些文本复制到任何单元格中。确保选中该单元格并运行宏。将生成的文本复制回Notepad ++。

令人惊讶的是,此简单功能在Notepad ++中或通过诸如之类的插件不可用TextFX


1

Notepad ++的BinHex插件版本2.0具有实现的String反向功能。

您可以标记应该反转的字符串,然后按Ctrl+ R


0

如果您的字符串少于10个字符,则是gor想法的扩展:
对此做一个宏。
在N ++中突出显示所需区域

搜索:

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

更换:

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

替换选择:选中

N ++只支持十个组,这就是您得到的全部,但是至少它一次可以处理十个字母。

与主题无关,IE的正则表达式引擎在这类正则表达式方面与公认的有所不同,因此无需迭代即可在IE中实现。


0
  1. 选择要反转的文本。
  2. 通过使用“选择”为“替换”窗口并将“正则表达式”选择为“ \ n \ 1替换所有(。)”,将其分成多行
  3. 再次选择文本(由于某些原因,在第2步之后,最后一个字符被排除在选择之外)。
  4. 使用记事本++中的“反转行顺序”的答案来反转行
  5. 通过使用“替换”窗口将“输入”选择为“已扩展”以将所有\ n替换为空字符串,以重新组合行。
  6. 您可能需要删除多余的换行符。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.