Notepad ++将每个单词的每个首字母大写

Fra*_*art 10 regex notepad++

输入: "notepad++ capitalize every first letter of every word"

输出: "Notepad++ Capitalize Every First Letter Of Every Word"

我一直试图利用ctr+F和利用每个单词的第一个字母regex.

到目前为止,我一直在尝试使用find:\b(.)或者\<(.)使用replace:\u\1但是这会导致我的所有字母都被大写.

我已经做出了应有的与^(.)&\u\1其次\s\b(.)&\u\1.

然而,这对我来说似乎很愚蠢,因为有许多帖子谈论使用单词边界的开头.我很难让他们工作.谢谢你的考虑!

Wik*_*żew 22

背景

根据Notepad ++规范(参见" 替换"部分),有三个运算符在将子字符串转换为大写时非常有用:

\u
导致下一个字符以大写
\U
形式输出导致下一个字符以大写形式输出,直到\E找到a.
\E
结束由\L或启动的强制案例模式\U.

因此,您可以匹配子字符串并将其第一个字符大写\u为大写,或匹配字符并使用\U/\E.

请注意,Unicode字符不会变为大写,只会影响ASCII字母.


BOW(Word的开头)Notepad ++中的Bug

请注意,目前(在Notepad ++ v.6.8.8中)单词的开头由于某种原因不起作用.适用于大多数引擎的常见解决方案(在Sublime Text中使用它并且它将匹配)不起作用:

\b(\w)
Run Code Online (Sandbox Code Playgroud)

此正则表达式匹配所有单词字符,而不管它们在字符串中的位置.

我记录了一个错误的Word边界问题,旁边有一个通用的子模式#1404.


解决方案#1(适用于当前的Notepad ++ v.6.8.8)

一种解决方案可以使用\w+和替换\u$0(不需要使用任何捕获组).虽然这并不意味着我们只匹配单词开头的字符,但模式只会匹配单词字符块([a-zA-Z0-9_]+所有Unicode字母/数字)并将第一个字符变为大写.


解决方案#2(适用于当前的Notepad ++ v.6.8.8)

所述第二溶液可与定义的特殊的边界来实现lookbehinds:

(?:(?<=^)|(?<=[^\w]))\w
Run Code Online (Sandbox Code Playgroud)

并替换为\U$0\E.

正则表达式(?:(?<=^)|(?<=[^\w]))\w仅在行((?<=^))的开头或非单词字符((?<=[^\w]))之后匹配字母数字.

替换 - \U$0\E包含一个\U标志,开始将字母大写,并且\E是一个告诉Notepad ++停止转换大小写的标志.


边缘情况

如果您有连字符的单词,比如well-known,你只需要第一部分予以资本化,你可以使用[\w-]+\u$0更换.它也会保持字符串-v--help完整.


小智 18

一个更简单的正则表达式对我有用:

找: (\w+)

更换: \u$0


Raj*_*esh 6

Notepad ++ v7.3.2中有一个快捷方式可以将每个单词的每个首字母大写.

ALT + U.

不确定以前的版本.


小智 5

大写每个单词的第一个字母:使用快捷键:Alt + U

小写每个单词的第一个字母:使用快捷键:Clt + U

在7.6.3版中运作的捷径