输入: "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字母.
请注意,目前(在Notepad ++ v.6.8.8中)单词的开头由于某种原因不起作用.适用于大多数引擎的常见解决方案(在Sublime Text中使用它并且它将匹配)不起作用:
\b(\w)
Run Code Online (Sandbox Code Playgroud)
此正则表达式匹配所有单词字符,而不管它们在字符串中的位置.
我记录了一个错误的Word边界问题,旁边有一个通用的子模式#1404.
第一种解决方案可以使用\w+和替换\u$0(不需要使用任何捕获组).虽然这并不意味着我们只匹配单词开头的字符,但模式只会匹配单词字符块([a-zA-Z0-9_]+所有Unicode字母/数字)并将第一个字符变为大写.
所述第二溶液可与定义的特殊的边界来实现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完整.
| 归档时间: |
|
| 查看次数: |
18788 次 |
| 最近记录: |