是否有用于反向引用的大写/小写版本的正则表达式替换术语? [复制]
Posted
技术标签:
【中文标题】是否有用于反向引用的大写/小写版本的正则表达式替换术语? [复制]【英文标题】:Is there a regex replacement term for the uppercase/lowercase version of a back reference? [duplicate] 【发布时间】:2014-01-07 14:03:50 【问题描述】:假设我想将一个小写字符串更改为“title case”;其中每个单词的第一个字母大写。这可以通过在替换表达式中使用修饰符对replaceAll()
进行一次调用来完成吗?
例如,
str = str.replaceAll("\\b(\\S)", "???$1");
在哪里“???”是折叠下一个字母大小写的表达式。
我看到这是其他工具(如 textpad),\U
会将下一个字母折叠为大写。
?
【问题讨论】:
不幸的是,这在 Java 中不可用。您将不得不运行一个循环并一一替换匹配项。见this answer。 如果你不反对使用 Apache Commons,那么你可以像这样使用org.apache.commons.lang3.StringUtils
:StringUtils.capitalize(str.toLowerCase())
。然而,这不能使用标准 Java 库来完成。
也许看看WordUtils。
也许你可以使用callback of your own ?
【参考方案1】:
replaceAll 不可能。但是你可以使用正则表达式和拆分:
public String titleTextConversion(String text)
String[] words = text.split("(?<=\\W)|(?=\\W)");
StringBuilder sb = new StringBuilder();
for (String word : words)
if (word.length() > 0)
sb.append(word.substring(0, 1).toUpperCase()).append(word.substring(1).toLowerCase());
return sb.toString();
【讨论】:
以上是关于是否有用于反向引用的大写/小写版本的正则表达式替换术语? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
js密码正则表达式:要求包含大小写字母、数字和特殊符号,8~16位
js正则怎么判断一个字符串里必须包含大写字母,小写字母,数字,特殊字符? 看清楚了,是必须包含,求教