输入:"notepad++ capitalize every first letter of every word"
输出:"Notepad++ Capitalize Every First Letter Of Every Word"
我一直在尝试使用ctr+F
和regex
将每个单词的第一个字母大写。
到目前为止,我一直在尝试使用find:\b(.)
或\<(.)
替换:\u\1
但这导致我的所有字母都被大写。
我已将^(.)
& \u\1
跟随\s\b(.)
&amp; \u\1
。
然而,这对我来说似乎很愚蠢,因为有很多帖子都在谈论使用单词边界的开头。我很难让他们工作。谢谢你的考虑!
答案 0 :(得分:20)
根据Notepad ++规范(参见Substitutions部分),有三个运算符在将子字符串转换为大写时非常有用:
\u
导致下一个字符以大写形式输出
\U
导致下一个字符以大写形式输出,直到找到\E
为止\E
结束由\L
或\U
启动的强制案例模式。
因此,您可以匹配子字符串并将其第一个字符大写为\u
以将其大写,或匹配字符并使用\U
/ { {1}} 强>
请注意,Unicode字符不会被转换为大写字母,只会影响ASCII字母。
<小时/>
请注意,目前(在Notepad ++ v.6.8.8中)单词的开头由于某种原因不起作用。适用于大多数引擎的常见解决方案(在Sublime Text中使用它并且它将匹配)不起作用:
\E
此正则表达式匹配所有单词字符,无论它们在字符串中的位置如何。
我记录了一个错误Word boundary issue with a generic subpattern next to it #1404 。
<小时/>
第一个解决方案可以使用\b(\w)
并替换为\w+
(无需使用任何捕获组)。虽然这并不意味着我们只匹配单词开头的字符,但模式只会匹配单词字符块(\u$0
+所有Unicode字母/数字)并将第一个字符变为大写。
<小时/>
第二个解决方案可以使用 lookbehinds 定义的特殊边界来实现:
[a-zA-Z0-9_]
并替换为(?:(?<=^)|(?<=[^\w]))\w
。
正则表达式\U$0\E
仅在行的开头((?:(?<=^)|(?<=[^\w]))\w
)或非单词字符((?<=^)
)之后匹配字母数字。
替换 - (?<=[^\w])
- 包含一个\U$0\E
标志,开始将字母大写,\U
是一个告诉Notepad ++停止转换大小写的标志。
如果您使用带有连字符的字词,例如\E
,并且您只希望第一部分大写,则可以well-known
替换[\w-]+
。它还会保留\u$0
或-v
等字符串。
答案 1 :(得分:18)
一个对我有用的简单正则表达式:
查找:(\w+)
替换:\u$0
答案 2 :(得分:5)
Notepad ++ v7.3.2中有一个快捷方式可以将每个单词的每个首字母大写。
ALT + U
不确定以前的版本。
答案 3 :(得分:4)
大写每个单词的第一个字母: 使用快捷键:Alt + U
小写每个单词的第一个字母: 使用快捷键:Clt + U
在7.6.3版中运行的快捷方式
答案 4 :(得分:2)
通过录制使用以下替换的宏来实现类似的功能。
Find what: ([a-z])+
Replace with: \u$0\E
Tick 'In selection'
这是我从C:\Users\%USERNAME%\AppData\Roaming\Notepad++\shortcuts.xml
中提取的结果宏。
<Macro name="Title Case" Ctrl="no" Alt="no" Shift="no" Key="0">
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="([A-Z])" />
<Action type="3" message="1625" wParam="0" lParam="2" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="\L$0" />
<Action type="3" message="1702" wParam="0" lParam="898" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="([a-z])+" />
<Action type="3" message="1625" wParam="0" lParam="2" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="\u$0\E" />
<Action type="3" message="1702" wParam="0" lParam="898" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
</Macro>
额外:您可以使用以下方法将此添加到右键单击上下文菜单(contextMenu.xml
)中
<Item MenuEntryName="Macro" MenuItemName="Title Case" />