基本上就是标题所说的,让我举个例子。
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++ 文档,或对其进行过滤,或直接传输到控制台窗口
- 所有对象和方法的完整文档
答案2
正如 DavidPostill 所写,这无法通过 Notepad++ 实现。
但是,如果替换列表和要替换的文件列表很短,我会使用以下手动方法:
- 首先,替换
XXX
,因为XXX
不是X
或的一部分XX
(反过来,X
是 的一部分XXX
,并且如果你X
先替换 ,例如foo
,那么你将得到foo
,foofoo
,foofoofoo
。) - 然后更换
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 并使用perl
、sed
或awk
进行替换。
电源外壳
就像声明的那样这里,你可以使用一些 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