Notepad++,用列表中的值替换“x”

Notepad++,用列表中的值替换“x”

基本上就是标题所说的,让我举个例子。

this=X
that=XXX
those=XX

我想随机用列表中的值(例如 1、2 或 3)替换 X,使其变成:

this=2
that=312
those=32

请注意,我希望字符串中没有重复,尽管如果需要,我可以稍后修复它。

答案1

我想随机用列表中的值替换 X

使用内置的 Notepad++ 功能无法实现这一点。

您可以编写脚本来完成此操作。

有一个python 脚本插件对于 Notepad++:

Notepad++ 的 Python 脚本

  • 完全以编程方式访问 Notepad++ 的功能和菜单
  • 完全以编程方式访问 Scintilla 的所有功能
  • 调用其他插件菜单项
  • 将菜单项、快捷方式和工具栏图标分配给脚本
  • 直接从 Python 脚本处理 Notepad++ 和 Scintilla 事件
  • Python 控制台内置
  • 完全支持正则表达式搜索和替换 - 脚本 Python 正则表达式替换
  • 启动外部程序并将输出直接传输到 Notepad++ 文档,或对其进行过滤,或直接传输到控制台窗口
  • 所有对象和方法的完整文档

来源Notepad++ 的 Python 脚本

答案2

正如 DavidPostill 所写,这无法通过 Notepad++ 实现。

但是,如果替换列表和要替换的文件列表很短,我会使用以下手动方法:

  • 首先,替换XXX,因为XXX不是X或的一部分XX(反过来,X是 的一部分XXX,并且如果你X先替换 ,例如foo,那么你将得到foofoofoofoofoofoo。)
  • 然后更换XX
  • 最后,替换X

    测试1=X 测试2=XX 测试3=XXX

ctrl-a, ctrl-h

搜索:XXX 替换:foo

test1=X
test2=XX
test3=foo

ctrl-h

搜索:XX 替换:bar

test1=X
test2=bar
test3=foo

等等。

反例:

test1=X
test2=XX
test3=XXX

ctrl-a, ctrl-h

搜索:X 替换:foo

test1=foo
test2=foofoo
test3=foofoofoo

备择方案

赛格威

我想到第一个选择是Cygwin因为它已经安装在我的 PC 上了。

启动 Cygwin 并使用perlsedawk进行替换。

电源外壳

就像声明的那样这里,你可以使用一些 PowerShell 脚本

(Get-Content test.txt) | ForEach-Object { $_ -replace "foo", "bar" } | Set-Content test2.txt

就像声明的那样这里,您也可以使用批处理脚本,例如

@echo off &setlocal
setlocal enabledelayedexpansion

set "search=%1"
set "replace=%2"
set "textfile=Input.txt"
set "newfile=Output.txt"
(for /f "delims=" %%i in (%textfile%) do (
    set "line=%%i"
    set "line=!line:%search%=%replace%!"
    echo(!line!
))>"%newfile%"
del %textfile%
rename %newfile%  %textfile%
endlocal

相关内容