在Java中,如果字符串以特殊字符开头,如何大写第一个字母?

在Java中,如果字符串以特殊字符开头,如何大写第一个字母?,java,regex,string,Java,Regex,String,我想把每个单词的第一个字母大写。我使用WordUtils函数。我的字符串有一些特殊字符,如“*”,-等。如何将正则表达式与大写的函数一起使用 尝试使用WordUtils.capitalize函数,其中,将字符串中每个单词的第一个字母大写 并不是说中的WordUtils已被弃用 使用Java自定义函数的其他方法: 公共字符串大写字(字符串句子){ 字符串字[]=句子.replaceAll(“\\s+”,”).trim().split(“”); StringBuffer newSentence=新的

我想把每个单词的第一个字母大写。我使用
WordUtils
函数。我的字符串有一些特殊字符,如
“*”
,-等。如何将正则表达式与
大写的
函数一起使用

尝试使用
WordUtils.capitalize
函数,其中,将
字符串中每个单词的第一个字母大写

并不是说中的
WordUtils
已被弃用

使用Java自定义函数的其他方法:

公共字符串大写字(字符串句子){
字符串字[]=句子.replaceAll(“\\s+”,”).trim().split(“”);
StringBuffer newSentence=新的StringBuffer();
int i=0;
int size=words.length;
for(字符串字:字){
newSentence.append(StringUtils.capitalize(word));
i++;

如果(i您可以使用
Mather/Pattern
appendReplacement

正则表达式

详情:

  • (?:^ |)
    非捕获组,匹配
    ^
    (在行首声明位置)
    '
    (空格)
  • [^a-z]*
    匹配零次和无限次之间的任何小写单词字符
  • [a-z]
    匹配任何小写单词字符
Java代码

public String upperCaseWords(String sentence) {
    String words[] = sentence.replaceAll("\\s+", " ").trim().split(" ");
    StringBuffer newSentence = new StringBuffer();
    int i =0;
    int size = words.length;
    for (String word : words) {
                newSentence.append(StringUtils.capitalize(word));
                i++;
                if(i<size){
                newSentence.append(" "); // add space
                }
    }

    return newSentence.toString();
}
输出:

String input = "*tried string".toLowerCase();

Matcher matcher = Pattern.compile("(?:^| )[^a-z]*[a-z]").matcher(input);

StringBuffer result = new StringBuffer();
while (matcher.find()) {
    matcher.appendReplacement(result, matcher.group().toUpperCase());
}

matcher.appendTail(result);

commons.lang.WordUtils不是因为common.text.WordUtils而被弃用了吗?它不能正常工作。当我执行时,结果是*trued sTring。但是我想*trued sTring作为结果。你是说你想让所有非数字字符后面都跟一个大写字母吗?这应该是你问题的一部分。
common.text.WordUtisls
也不推荐使用,但StringUtils.captilize不是不推荐的。在自定义方法中使用
StringUtils.capitalize
可以解决此问题,请查看我的更新答案。对于“*trued string”所需的输出是什么?*TREAD String是@AbleJohnson
字符的必需输出。toTitleCase
最终是为了大写字符而调用的,它在
中的
分隔符
参数中找到的任何字符后调用(String str,final char…分隔符)
。我们需要知道您是否希望在每个特殊字符后使用大写字母(即,只需将它们全部设置为分隔符),或者是否希望应用其他规则。例如,
st*ring st*ring st*ring*st*ring
应该是什么样子?例如:“*string 123try-bread 1*apple”返回“string 123try-bread 1*apple”@brandonmckenzie在您发布的每一种情况下,您只向我们展示了在一个空格后面的alpha字符和零个或多个非alpha字符的实例中您想要什么。在非alpha字符前面没有空格或alpha字符的情况下,您想要做什么?什么是
st*ring
?结果是
st*ring
,或
St*ring
?那么答案会受到影响。这个正则表达式的解释是什么?它不能用数字表示,例如123面包必须是123面包。例如:1)“字符串123try-bread 1*apple”必须是“*字符串123try-bread 1*apple”2)“字符串tr1y-br ead-app1le”必须是“字符串tr1y-br ead-Ap*p1le”为什么
-
?请告诉我
*string 123try345 apple-bread*string 1*apple-bread
?@willywonka15第一次出现小写字母是什么?好了。
String input = "*tried string".toLowerCase();

Matcher matcher = Pattern.compile("(?:^| )[^a-z]*[a-z]").matcher(input);

StringBuffer result = new StringBuffer();
while (matcher.find()) {
    matcher.appendReplacement(result, matcher.group().toUpperCase());
}

matcher.appendTail(result);
*Tried String