V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ybyqiji
V2EX  ›  问与答

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

  •  
  •   ybyqiji · 2019-05-31 22:29:21 +08:00 · 2285 次点击
    这是一个创建于 2001 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    20 条回复    2019-06-03 10:23:44 +08:00
    blackeeper
        1
    blackeeper  
       2019-05-31 22:31:49 +08:00
    正则替换就可以了
    ybyqiji
        2
    ybyqiji  
    OP
       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
        3
    silentstorm  
       2019-05-31 22:48:11 +08:00 via Android
    楼上这写的是什么玩意儿呀
    opengps
        4
    opengps  
       2019-05-31 22:49:27 +08:00 via Android   ❤️ 1
    4 次全文替换搞定了
    silentstorm
        5
    silentstorm  
       2019-05-31 22:49:48 +08:00 via Android
    随便一个高级文本编辑器都支持正则替换
    hoyixi
        6
    hoyixi  
       2019-05-31 22:52:12 +08:00
    @silentstorm

    2 楼这是 VB (Visual Basic)
    ysc3839
        7
    ysc3839  
       2019-05-31 22:55:32 +08:00 via Android
    发一段示例文本吧,不知道你说的 a,b,c,d 是什么情况。
    ybyqiji
        8
    ybyqiji  
    OP
       2019-05-31 23:00:14 +08:00
    不太会用正则替换,用了批处理 搞定了 谢谢各位啦
    ys0290
        9
    ys0290  
       2019-05-31 23:00:25 +08:00 via iPhone
    sed -i 's/\|a\|b\|c/w/g' file
    这样?
    ys0290
        10
    ys0290  
       2019-05-31 23:01:07 +08:00 via iPhone
    a 前面的\|划掉
    ybyqiji
        11
    ybyqiji  
    OP
       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
        12
    des  
       2019-05-31 23:09:07 +08:00
    建议学一下正则表达式,以后遇到这种东西都方便很多
    基本上现在稍稍高级点的编辑器都支持正则替换
    像这样:

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

    [a,b,c,d]
    替换为
    w
    oneisall8955
        18
    oneisall8955  
       2019-06-01 11:10:24 +08:00 via Android
    sed+regex
    jifengg
        19
    jifengg  
       2019-06-03 10:20:22 +08:00
    F12,运行:
    ```javascript
    "qabcde,c,ccc,dfdfdf".replace(/[abcd]1?/g,'w');
    ```
    jifengg
        20
    jifengg  
       2019-06-03 10:23:44 +08:00
    @jifengg
    以上换成
    "qabcde,c,ccc,dfdfdf".replace(/[abcd]{1}/g,'w');
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1540 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 17:06 · PVG 01:06 · LAX 09:06 · JFK 12:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.