如果完整的句子是大写的,则将字符串空格后的第一个字符大写

z31licg0  于 2021-06-30  发布在  Java
关注(0)|答案(3)|浏览(228)

我有一个问题,如果所有的句子都是大写的,如何将字符串的第一个单词大写。例如:“vessel one(l)inc”我想要的输出:“vessel one(l)inc”
目前,我应用这个代码,但这只适用于所有的句子小写

String source = "vessel two management sdn bhd";
StringBuffer res = new StringBuffer();

String[] strArr = source.split(" ");
 for (String str : strArr) {
  char[] stringArray = str.trim().toCharArray();
  stringArray[1] = Character.toLowerCase(stringArray[1]);
  str = new String(stringArray);

  res.append(str).append(" ");
  }

res.toString().trim()

有人能帮我吗?

uqzxnwby

uqzxnwby1#

如果使用lib,可以尝试wordutils。是一种选择。
另一种方法可能是转换整个字符串 toLowerCase 在应用上面指定的操作之前。

q9yhzks0

q9yhzks02#

首先,请选择 StringBuilder 结束 StringBuffer . 第二,你可以用 WordUtils.capitalizeFully(String) 喜欢

String source = "VESSEL ONE (L) INC";
String capitalized = WordUtils.capitalizeFully(source);

或者(如果您不能使用apachecommons),您可以编写自己的

private static String capitalizeFully(String str) {
    StringBuilder sb = new StringBuilder();
    boolean cnl = true; // <-- capitalize next letter.
    for (char c : str.toCharArray()) {
        if (cnl && Character.isLetter(c)) {
            sb.append(Character.toUpperCase(c));
            cnl = false;
        } else {
            sb.append(Character.toLowerCase(c));
        }
        if (Character.isWhitespace(c)) {
            cnl = true;
        }
    }
    return sb.toString();
}

public static void main(String[] args) {
    String source = "VESSEL ONE (L) INC";
    System.out.println(capitalizeFully(source));
}
yizd12fk

yizd12fk3#

试试这个

StringBuffer sb = new StringBuffer();
    Matcher m = Pattern.compile("\\b.+?\\b").matcher(source);
    while(m.find()) {
        String s = m.group().substring(0,1).toUpperCase() + m.group().substring(1).toLowerCase();
        m.appendReplacement(sb, s);
    }
    String res = sb.toString();

相关问题