首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Notepad++将每个单词的首字母大写

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

Stack Overflow用户
提问于 2015-08-11 21:33:47
回答 5查看 27.8K关注 0票数 17

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

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

我一直试图用ctr+Fregex大写每个单词的第一个字母。

到目前为止,我一直试图用find:\b(.)\<(.)替换:\u\1,但这会导致我的所有信件都大写。

我已经交了\u\1,其次是\s\b(.) & \u\1

然而,在我看来,这似乎很傻,因为有很多帖子谈论使用单词边界的开头。我只是很难让他们发挥作用。谢谢你的关心!

EN

Stack Overflow用户

回答已采纳

发布于 2015-08-11 22:39:26

背景

根据Notepad++规范(请参阅http://docs.notepad-plus-plus.org/index.php/Regular_Expressions部分),有三个操作符在将子字符串大写为大写时很有用:

\u 导致下一个字符以大写形式输出 \U 使下一个字符以大写形式输出,直到找到\E为止。 \E 结束由\L\U发起的强制案例模式。

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

注意: Unicode字符不会大写,只有ASCII字母会受到影响。

Notepad++中的弓形(字首) Bug

请注意,目前(在Notepad++ v.6.8.8中),word的开头由于某种原因不起作用。与大多数引擎一起工作的通用解决方案(在崇高文本中使用它,它将匹配)不起作用:

代码语言:javascript
运行
复制
\b(\w)

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

,我记录了一个bug https://github.com/notepad-plus-plus/notepad-plus-plus/issues/1404

解决方案#1 (针对当前的Notepad++ v.6.8.8)

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

解决方案2(针对当前的Notepad++ v.6.8.8)

第二个解决方案可以用用查找器定义的特殊边界来实现。

代码语言:javascript
运行
复制
(?:(?<=^)|(?<=\W))\w

代之以\U$0\E

regex (?:(?<=^)|(?<=\W))\w只在行的开头((?<=^))或非字字符((?<=\W))之后匹配字母数字。

替换-- \U$0\E --包含一个开始转大写字母的\U标志,\E是一个指示Notepad++停止大小写转换的标志。

边缘案例

如果您有像well-known这样的连字符,并且只希望第一部分被大写,您可以使用[\w-]+\u$0替换。它还将保持像-v--help这样的字符串的完整性。

票数 29
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31952353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档