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

文本编辑器有正则替换功能么。专指大小写转换

  •  
  •   jianghu52 · 2015-03-25 16:25:35 +08:00 · 5565 次点击
    这是一个创建于 3549 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如我有这样几个字段
    sss_id_user
    ddd_xty_id
    ddd_Tty_id
    ddd_Uty_id
    我需要把下划线后面小写字母的文字首字母变成大写。也就是需要如下结果
    sss_Id_User
    ddd_Xty_Id
    ddd_Tty_Id
    ddd_Uty_Id
    我用emeditor 或者 everedit 都可以用正则/_[a-z]/ 定位到该文字,但是问题是怎么能替换呢。
    我替换部分 写 /_[A-Z]/不对啊
    16 条回复    2015-03-27 10:19:36 +08:00
    rrfeng
        1
    rrfeng  
       2015-03-25 16:27:15 +08:00
    替换 26 次即可……
    b821025551b
        2
    b821025551b  
       2015-03-25 16:32:17 +08:00
    写个程序替换26次 LOL~
    TimLang
        3
    TimLang  
       2015-03-25 16:34:13 +08:00
    vim的替换法::%s/\([^_]\+\)_\([^_]\+\)$/\u\1_\u\2/g
    jianghu52
        4
    jianghu52  
    OP
       2015-03-25 16:35:13 +08:00
    @rrfeng 那还要毛替换啊
    @b821025551b 要是我自己用,直接一个python脚本搞定,关键是给别人用。
    jianghu52
        5
    jianghu52  
    OP
       2015-03-25 16:36:25 +08:00
    @TimLang 咱能用低端点么。notpad++, editplus都行,给windows客户端用的。太高端了接受不了
    TimLang
        6
    TimLang  
       2015-03-25 16:37:21 +08:00
    @jianghu52 windows有Gvim啊。
    a0000
        7
    a0000  
       2015-03-25 16:45:59 +08:00
    @jianghu52 EditPlus 在查找里写(_[a-z])在替换里写\U\0 (注:把正则表达示(X)和支持\U\L\E 这两项勾上就好了)
    jianghu52
        8
    jianghu52  
    OP
       2015-03-25 17:13:03 +08:00
    @a0000 请教你的editplus 是什么版本,我的是3.0版本,没有看到有支持 \U\L的选项啊
    aec4d
        9
    aec4d  
       2015-03-25 17:16:23 +08:00   ❤️ 1
    @a0000 同上。。。
    还真没想到有这功能~~http://stackoverflow.com/questions/1039226/regex-to-change-to-sentence-case
    用正则 查找栏写_([a-z]) 替换栏写_\u\1
    aec4d
        10
    aec4d  
       2015-03-25 17:16:44 +08:00
    以上使用Notepad++
    joyeblue
        11
    joyeblue  
       2015-03-25 17:51:05 +08:00   ❤️ 1
    notepad++:

    <ctrl+h> 调出替换窗口
    查找目标:_([a-z])
    替换为: _\u\1

    注意,一定要勾选替换窗口最下面的 正则表达式选项
    jun4rui
        12
    jun4rui  
       2015-03-25 18:50:10 +08:00
    如果都是对齐的数据,都不需要正则啊,块选择或者多选择,然后按快捷键变成大写。jetbrains系列和sublimetext都可以vim我记得也有块选择
    jun4rui
        13
    jun4rui  
       2015-03-25 18:51:31 +08:00
    格式稍微有些变化不再一列的话,很多时候用宏也可以处理,例如按住ctrl+方向键右边几次,选择一个字符,转换成大写。很老的EditPlus2都可以
    xiaohanqing
        14
    xiaohanqing  
       2015-03-25 20:36:40 +08:00
    notopad++支持正则,还支持键盘宏
    a0000
        15
    a0000  
       2015-03-25 23:40:04 +08:00   ❤️ 1
    @jianghu52 我的EditPlus是V3.51版本的
    everedit
        16
    everedit  
       2015-03-27 10:19:36 +08:00
    EverEdit支持js脚本,js支持大小写转换。
    以下脚本另存为[我的替换.ejs]到EE的macro目录,然后别人就可以随便点击替换了。

    var str = ActiveDoc.Text;
    str = str.replace(/_[a-z]/g, function($1) {
    return $1.toLocaleUpperCase();
    });
    ActiveDoc.Text = str;
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5009 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 08:02 · PVG 16:02 · LAX 00:02 · JFK 03:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.