是否有用于反向引用的大写/小写版本的正则表达式替换术语? [复制]

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.StringUtilsStringUtils.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正则怎么判断一个字符串里必须包含大写字母,小写字母,数字,特殊字符? 看清楚了,是必须包含,求教

如何使用正则表达式在 Intellij IDEA 中用小写替换大写?

PHP正则表达式 - 替换一个反向引用[重复]

Java中的正则表达式反向引用

正则表达式字母大小写问题?