当前位置: 首页 > 知识库问答 >
问题:

在Java中,将字符串中每个单词的第一个字符大写[重复]

王英彦
2023-03-14

我必须定义一个包含大写方法的Translator类。该方法将收到一个StringBuffer,它只包含英文字母和空格,并将更改它,以便每个单词都以大写字母开头。

//我需要定义的类

public class Main {
  public static void main(String[] args) {
    StringBuffer titlu = new StringBuffer("Why it is good to participate in competitions");
    Translator.transformaCuMajuscule(titlu);
    System.out.println(titlu); // Why It Is Good To Participate In Competitions
  }
}

共有2个答案

殷浩慨
2023-03-14

可以对字符串中的每个字符编写一个非常简单的循环,如果前一个字符是空格,则将其更改为大写。类似于以下内容(注意:这不是正确的Java,只是作为指南):

inputString[0] = upperCase(inputString[0]); // first is always uppercase
for(i=1; i<inputString.length; i++) {
  if (Character.isspace(inputString[i-1])
     inputString[i] = String.upperCase(inputString[i]);
}
return inputString;

它只使用一次通过字符串,因此相对较快(如果需要,您可以进一步优化它)。

编辑:如果其他字母需要更改为小写,可能会有点不同-您也可以将该检查合并到您的代码中。

谢建业
2023-03-14

你可以通过使用WordsUtil来实现这一点。大写(字符串)来自Apache commons文本库的库。

或者您可以编写一个简单的方法来做到这一点。首先,您可以降低字符串的字符(如果您严格需要首字母为大写;否则您可以跳过此步骤)。然后,使用正则表达式匹配每个单词的第一个字母,并将它们替换为StringBuilder

正则表达式将帮助您实际识别每个单词的第一个字母。方法Character.isSpace(char)仅检查给定字符是否为空格。此外,单个空格不仅不足以检测单词的开头,因为用户可能会错误地键入多个空格,而且它不会捕获所有其他类型的空格,例如制表符、新行等。

public static String initCap(String str) {
    if (str == null) {
        return null;
    }

    StringBuilder strBuilder = new StringBuilder(str.toLowerCase());

    Pattern pattern = Pattern.compile("^\\p{Lower}|(\\W+)\\p{Lower}");
    Matcher matcher = pattern.matcher(str.toLowerCase());
    while (matcher.find()) {
        strBuilder.replace(matcher.start(), matcher.end(), matcher.group().toUpperCase());
    }

    return strBuilder.toString();
}
 类似资料:
  • 问题内容: Java中是否内置了一个函数,该函数可以大写字符串中每个单词的第一个字符,而不会影响其他单词? 例子: jon skeet -> Jon Skeet miles o’Brien-> Miles O’Brien(B仍然是大写字母,这排除了标题大小写) old mcdonald-> Old Mcdonald* (Old McDonald也可以找到,但我不认为它会那么聪明。) 快速浏览一下J

  • 我有一个函数,应该把字符串中每个单词的第一个字母大写,但不知何故,它提供了不正确的结果,知道为什么吗?我需要修理一下。 所以输入:hello dolly输出:hello dolly。 空格计算正确,但大写不正确。

  • 问题内容: 我正在尝试使程序执行以下操作: 假设我们有一个被设置为的被叫。我想输出给用户,每个单词的第一个字符。我尝试使用该方法,但是没有成功。 我的代码: 我试图检测是否有空格,那么我可以简单地获取下一个索引。谁能告诉我我在做什么错? 问题答案: 尝试按(空格)分割,然后获取每个单词的(第一个字符)并按如下方式打印:

  • 我试图编写一个函数,将字符串中每个单词的第一个字母大写(将字符串转换为标题大小写)。 例如,当输入是时,我希望是输出。然而,该函数返回。 这是我的代码:

  • 问题内容: 我有一个字符串:“ hello good old world”,我想将每个单词的每个首字母大写,而不是使用.toUpperCase()整个字符串。是否有现成的java助手可以完成这项工作? 问题答案: 看看ACL WordUtils。