使用 Notepad++ 将 under_score_case 更改为 CamelCase?

使用 Notepad++ 将 under_score_case 更改为 CamelCase?

我可以在 NP++ 中编写正则表达式来查找under_score_case。我可以使用 NP++ 中的 TextFX 通过突出显示和选择将大小写更改为大写和小写。

如何使用 NP++ 的查找/替换或 TextFX 的查找和替换将它们拼接在一起并转换under_score_casecamelCase

我想学习如何在 NP++ 中执行此操作而不使用脚本。

示例输入:

this is_a_line
some more_data_over_here
whoop de_do_da

期望输出:

this isALine
some moreDataOverHere
whoop deDoDa

匹配下划线的正则表达式是_([a-z])。我认为存在但找不到的替代项是类似 的内容_\toupper\1

答案1

我有一个解决方案,虽然冗长而复杂,但可以在 Notepad++ 中运行。它需要使用正则表达式、可选的常规搜索和替换以及 TextFX。

  1. 在每个单词前面添加一个占位符,我选择了Z。它可能不必是字母,但最后一步更容易。使用正则表达式,搜索\<([^ ]*)\>并替换为Z\1
  2. 用独特的占位符序列替换现有空格。我选择了 #space#。这可以用正则表达式完成,但我更喜欢使用普通或扩展。
  3. 用空格替换下划线。如果有任何下划线不应替换,则可能需要自定义正则表达式。我只是直接搜索并替换。
  4. 选择所有文本,然后从 TextFX 菜单中选择TextFX Characters -> Proper Case
  5. 现在我们需要反转前 3 个步骤。搜索空格,并将其替换为空。然后搜索空格占位符序列,并将其替换为空格。最后,使用正则表达式,搜索\<Z([^ ]*)\>并替换为\1

答案2

在 NP++ 中,一个简单的查找/替换就可以完成以下操作:

寻找: [_]{1,1}([a-z])

代替: \U$1

您需要在“替换”面板中选择“正则表达式”单选按钮才能使其工作。

答案3

我自己通常使用 vim 作为编辑器。以下正则表达式可实现您在 vim 中尝试执行的操作:

%s/_\([a-zA-Z]\)/\u\1/g

据我所知(我玩了一会儿 NP++),Notepad++ 不理解\uPerl Regexp 中的大写宏。您可能无法使用 Notepad++ 完全做到这一点。希望有人能证明我错了,让您开心。

答案4

我个人最喜欢的是 sed。它的速度非常快:

> 回显 make_me_camel_case_please | sed -e 's/(_[az])/\U\1/g' -e 's/_//g'

请用骆驼命名法

您可以使用 -i 选项对您正在编辑的文件执行替换,N++ 应该会获取更改。

这也会删除所有下划线,就像上面的一些解决方案一样。如果这是个问题,可以修复。

相关内容