【问题标题】:How to replace uppercase letters to lowercase letters using regex in Eclipse?如何在 Eclipse 中使用正则表达式将大写字母替换为小写字母?
【发布时间】:2011-01-16 03:40:25
【问题描述】:

我想检查我所有的源代码文件,并将每个出现的k_Xyyy 替换为k_xyyy(将k_ 之后的第一个字母从大写转换为小写)。

我正在使用 Eclipse 对话框来搜索和替换多个文件。现在我有正则表达式\bk_([A-Z])

如何指定正则表达式的替换字符串?

【问题讨论】:

  • 你不能为此使用 Eclipse 的重构功能吗?
  • 每当我从带有列名前缀的表中生成实体时,我都会定期使用它。

标签: regex eclipse uppercase lowercase


【解决方案1】:

我刚刚利用 VIM 的强大功能解决了相同的任务(必须将 .net 接口转换为 java 接口):)

void DoMethod1 -> void doMethod1
Foo PerformMethod2 -> Foo performMethod2
:%s/\(^\s*\w\+\s\+\)\([A-Z]\)/\1\L\2/g

我们在这里搜索(可选缩进,后跟返回类型,后跟空格),然后是(大写字母)。大括号正在捕获组。然后我们正在执行替换第一个捕获组\1小写\L第二个捕获组\2。

这当然需要您在 Vim 中打开文件,但无论如何这比在 Eclipse 中手动执行相同操作要快得多。

【讨论】:

    【解决方案2】:

    这是不可能的。要么使用 Eclipse 的重构功能,要么一次替换一个:

    regex       : \bk_A
    replacement : k_a 
    
    regex       : \bk_B
    replacement : k_b 
    
    ...
    
    regex       : \bk_Z
    replacement : k_z 
    

    【讨论】:

      【解决方案3】:

      我需要对需要将字符串文字转换为小写的大量源代码执行此操作。我找到了一种使用 Notepad++ 和 Python Script 插件的方法,就像使用的 here 一样。

      【讨论】:

      • 在 Notepad++ 中,您可以在替换字符串中使用 \L$1\E 将第一个匹配组转换为小写字母。对于大写的 \U...\E 也是如此
      【解决方案4】:

      (对我来说,因为我刚开始编程,所以想想这个更有趣) 取$pattern_to_change 并使用ord() 将其从ascii 转换为十进制。取所得的十进制数并加32。然后使用chr()$desired_pattern 转换回ascii。

      或者只需下载SublimeText 并使用其查找和替换功能来查找所有匹配项并将它们替换为不同的文本(Sublime 也有正则表达式)。

      我相信你可以手动转换 10 亿,因为这篇文章已经有 5 年的历史了,但是使用 Sublime 可以在 5 分钟内完成。

      非常有用的文本编辑器。

      【讨论】:

        猜你喜欢
        • 2011-03-15
        • 1970-01-01
        • 1970-01-01
        • 2011-05-07
        • 2019-04-06
        • 1970-01-01
        • 2019-09-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多