簡體   English   中英

在字符串空格后大寫第一個字符如果完整句子是大寫的java

[英]Capitalize First Character after space of a String If complete sentence is uppercase java

我有一些問題,如果所有句子都是大寫的話,如何大寫字符串的第一個單詞。 例如:“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()

有人可以幫幫我嗎?

首先,請首選StringBuilder不是StringBuffer 其次,您可以使用WordUtils.capitalizeFully(String)類的

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

或者(如果你不能使用apache commons)你可以寫自己喜歡的

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));
}

如果使用lib,您可以嘗試使用WordUtils 是一個選擇。

另一種方法可能是在應用上面指定的操作之前將整個字符串轉換為toLowerCase

試試這個

    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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM