请教如何把文本里的 a,b,c,d....批量同时替换成 w 呢

2019-05-31 22:29:21 +08:00
 ybyqiji

一般的文本编辑器都只支持单个替换,多个同时替换有好的解决办法吗

2131 次点击
所在节点    问与答
20 条回复
blackeeper
2019-05-31 22:31:49 +08:00
正则替换就可以了
ybyqiji
2019-05-31 22:36:48 +08:00
@blackeeper 从网上看到这个批处理文件,不太成功,问题出在哪里了呢,技术不太行,只能照葫芦画瓢

Private Sub Command1_Click()
Dim FileNumber1, FileNumber2, Str As String
FileNumber1 = FreeFile '得到一个未使用的文件号。
Open "D:\gif-00000\123.txt" For Input As #FileNumber1 '打开要读取的文件
FileNumber2 = FreFile
Open "D:\gif-00000\abc.txt" For Output As #FileNumber2 '打开要写入的文件
While Not EOF(1) ‘直到最后一行
Line Input #FileNumber1, Str ’按行读取文件
Str = Replace(Str, "lkjhgiu111", "大") ‘替换第一个字符
Str = Replace(Str, "lkjhgiu112", "大") ‘替换第一个字符
Str = Replace(Str, "lkjhgiu113", "大") ‘替换第一个字符
Str = Replace(Str, "lkjhgiu114", "大") ‘替换第一个字符
Str = Replace(Str, "lkjhgiu115", "大") ‘替换第一个字符
Str = Replace(Str, "lkjhgiu116", "大") ‘替换第一个字符
Str = Replace(Str, "lkjhgiu117", "大") ‘替换第一个字符
Str = Replace(Str, "lkjhgiu118", "大") ‘替换第一个字符
Str = Replace(Str, "lkjhgiu119", "大") ‘替换第一个字符
Str = Replace(Str, "lkjhgiu120", "大") ‘替换第一个字符
Str = Replace(Str, "lkjhgiu121", "大") ‘替换第一个字符
Str = Replace(Str, "lkjhgiu122", "大") ‘替换第一个字符
Str = Replace(Str, "lkjhgiu123", "大") ‘替换第一个字符

Print #FileNumber2, Str '写入替换后的内容
Wend
Close #FileNumber1 '关闭文件
Close #FileNumber2 '关闭文件
End Sub
silentstorm
2019-05-31 22:48:11 +08:00
楼上这写的是什么玩意儿呀
opengps
2019-05-31 22:49:27 +08:00
4 次全文替换搞定了
silentstorm
2019-05-31 22:49:48 +08:00
随便一个高级文本编辑器都支持正则替换
hoyixi
2019-05-31 22:52:12 +08:00
@silentstorm

2 楼这是 VB (Visual Basic)
ysc3839
2019-05-31 22:55:32 +08:00
发一段示例文本吧,不知道你说的 a,b,c,d 是什么情况。
ybyqiji
2019-05-31 23:00:14 +08:00
不太会用正则替换,用了批处理 搞定了 谢谢各位啦
ys0290
2019-05-31 23:00:25 +08:00
sed -i 's/\|a\|b\|c/w/g' file
这样?
ys0290
2019-05-31 23:01:07 +08:00
a 前面的\|划掉
ybyqiji
2019-05-31 23:01:22 +08:00
网上找的这个 一葫芦画瓢 搞定了


@echo off
(For /f "delims=" %%i in (a.txt) do (Set str=%%i
SetLocal EnableDelayedExpansion
Set str=!Str:Helloo=hello!
Set str=!Str:Helloo=hello!
Set str=!Str:Helloo=hello!
echo !str!
EndLocal
))>1.txt
start 1.txt
pause>nul
des
2019-05-31 23:09:07 +08:00
建议学一下正则表达式,以后遇到这种东西都方便很多
基本上现在稍稍高级点的编辑器都支持正则替换
像这样:

如果是想匹配不是单词的字母可以这样
chrisliu1314
2019-06-01 00:27:58 +08:00
好多编辑器,比如,vscode,都支持批量替换啊
silentstorm
2019-06-01 05:54:49 +08:00
@hoyixi
我知道这是 vba,关键是这写的是什么乱七八糟的啊
Jirajine
2019-06-01 06:21:01 +08:00
楼主你起码学一门脚本语言吧。。
flynaj
2019-06-01 08:10:28 +08:00
经常处理文档学一下 Linux 命令,现在 Windows10 下 wsl 可以用,sed -i,2 楼那个多少行的 VBS,一个 sed 就 1 解决。
mzname
2019-06-01 08:48:54 +08:00
渣渣表示只会用 word
勾选通配符

[a,b,c,d]
替换为
w
oneisall8955
2019-06-01 11:10:24 +08:00
sed+regex
jifengg
2019-06-03 10:20:22 +08:00
F12,运行:
```javascript
"qabcde,c,ccc,dfdfdf".replace(/[abcd]1?/g,'w');
```
jifengg
2019-06-03 10:23:44 +08:00
@jifengg
以上换成
"qabcde,c,ccc,dfdfdf".replace(/[abcd]{1}/g,'w');

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/569604

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX