我可以在 NP++ 中编写正则表达式来查找under_score_case
。我可以使用 NP++ 中的 TextFX 通过突出显示和选择将大小写更改为大写和小写。
如何使用 NP++ 的查找/替换或 TextFX 的查找和替换将它们拼接在一起并转换under_score_case
为camelCase
?
我想学习如何在 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。
- 在每个单词前面添加一个占位符,我选择了
Z
。它可能不必是字母,但最后一步更容易。使用正则表达式,搜索\<([^ ]*)\>
并替换为Z\1
。 - 用独特的占位符序列替换现有空格。我选择了 #space#。这可以用正则表达式完成,但我更喜欢使用普通或扩展。
- 用空格替换下划线。如果有任何下划线不应替换,则可能需要自定义正则表达式。我只是直接搜索并替换。
- 选择所有文本,然后从 TextFX 菜单中选择
TextFX Characters -> Proper Case
。 - 现在我们需要反转前 3 个步骤。搜索空格,并将其替换为空。然后搜索空格占位符序列,并将其替换为空格。最后,使用正则表达式,搜索
\<Z([^ ]*)\>
并替换为\1
。
答案2
在 NP++ 中,一个简单的查找/替换就可以完成以下操作:
寻找: [_]{1,1}([a-z])
代替: \U$1
您需要在“替换”面板中选择“正则表达式”单选按钮才能使其工作。
答案3
我自己通常使用 vim 作为编辑器。以下正则表达式可实现您在 vim 中尝试执行的操作:
%s/_\([a-zA-Z]\)/\u\1/g
据我所知(我玩了一会儿 NP++),Notepad++ 不理解\u
Perl Regexp 中的大写宏。您可能无法使用 Notepad++ 完全做到这一点。希望有人能证明我错了,让您开心。
答案4
我个人最喜欢的是 sed。它的速度非常快:
> 回显 make_me_camel_case_please | sed -e 's/(_[az])/\U\1/g' -e 's/_//g'
请用骆驼命名法
您可以使用 -i 选项对您正在编辑的文件执行替换,N++ 应该会获取更改。
这也会删除所有下划线,就像上面的一些解决方案一样。如果这是个问题,可以修复。