Como maiúsculas cada primeira letra da palavra em uma seqüência de caracteres?

Duplicar Possível:
Capitalize o primeiro caractere de cada palavra em uma string Java

Eu tenho uma string: “olá bom mundo velho” e eu quero maiúscula toda primeira letra de cada palavra, não a cadeia inteira com .toUpperCase (). Existe um ajudante java existente que faz o trabalho?

Dê uma olhada no ACL WordUtils .

WordUtils.capitalize("your string") == "Your String" 

Aqui está o código

  String source = "hello good old world"; StringBuffer res = new StringBuffer(); String[] strArr = source.split(" "); for (String str : strArr) { char[] stringArray = str.trim().toCharArray(); stringArray[0] = Character.toUpperCase(stringArray[0]); str = new String(stringArray); res.append(str).append(" "); } System.out.print("Result: " + res.toString().trim()); 
 sString = sString.toLowerCase(); sString = Character.toString(sString.charAt(0)).toUpperCase()+sString.substring(1); 

Eu não sei se há uma function, mas isso faria o trabalho, caso não houvesse um exsiting:

 String s = "here are a bunch of words"; final StringBuilder result = new StringBuilder(s.length()); String[] words = s.split("\\s"); for(int i=0,l=words.length;i0) result.append(" "); result.append(Character.toUpperCase(words[i].charAt(0))) .append(words[i].substring(1)); } 
 import org.apache.commons.lang.WordUtils; public class CapitalizeFirstLetterInString { public static void main(String[] args) { // only the first letter of each word is capitalized. String wordStr = WordUtils.capitalize("this is first WORD capital test."); //Capitalize method capitalizes only first character of a String System.out.println("wordStr= " + wordStr); wordStr = WordUtils.capitalizeFully("this is first WORD capital test."); // This method capitalizes first character of a String and make rest of the characters lowercase System.out.println("wordStr = " + wordStr ); } } 

Saída:

Este é o primeiro teste de capital WORD.

Este é o primeiro teste de capital da palavra.

Aqui está uma solução muito simples e compacta. str contém a variável de tudo o que você deseja fazer em maiúsculas.

 StringBuilder b = new StringBuilder(str); int i = 0; do { b.replace(i, i + 1, b.substring(i,i + 1).toUpperCase()); i = b.indexOf(" ", i) + 1; } while (i > 0 && i < b.length()); System.out.println(b.toString()); 

É melhor trabalhar com StringBuilder porque String é imutável e é ineficiente para gerar novas strings para cada palavra.

Tentando ser mais eficiente em termos de memory do que dividir a string em várias strings e usar a estratégia mostrada pelo Darshana Sri Lanka. Além disso, manipula todo o espaço em branco entre as palavras, não apenas o caractere “”.

 public static String UppercaseFirstLetters(String str) { boolean prevWasWhiteSp = true; char[] chars = str.toCharArray(); for (int i = 0; i < chars.length; i++) { if (Character.isLetter(chars[i])) { if (prevWasWhiteSp) { chars[i] = Character.toUpperCase(chars[i]); } prevWasWhiteSp = false; } else { prevWasWhiteSp = Character.isWhitespace(chars[i]); } } return new String(chars); } 
  String s = "java is an object oriented programming language."; final StringBuilder result = new StringBuilder(s.length()); String words[] = s.split("\\ "); // space found then split it for (int i = 0; i < words.length; i++) { if (i > 0){ result.append(" "); } result.append(Character.toUpperCase(words[i].charAt(0))).append( words[i].substring(1)); } System.out.println(result); 

Saída: Java é uma linguagem de programação orientada a object.

Além disso, você pode dar uma olhada na biblioteca StringUtils . Tem um monte de coisas legais.

 import java.util.Scanner; public class CapitolizeOneString { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.print(" Please enter Your word = "); String str=scan.nextLine(); printCapitalized( str ); } // end main() static void printCapitalized( String str ) { // Print a copy of str to standard output, with the // first letter of each word in upper case. char ch; // One of the characters in str. char prevCh; // The character that comes before ch in the string. int i; // A position in str, from 0 to str.length()-1. prevCh = '.'; // Prime the loop with any non-letter character. for ( i = 0; i < str.length(); i++ ) { ch = str.charAt(i); if ( Character.isLetter(ch) && ! Character.isLetter(prevCh) ) System.out.print( Character.toUpperCase(ch) ); else System.out.print( ch ); prevCh = ch; // prevCh for next iteration is ch. } System.out.println(); } } // end class 
 public class WordChangeInCapital{ public static void main(String[] args) { String s="this is string example"; System.out.println(s); //this is input data. //this example for a string where each word must be started in capital letter StringBuffer sb=new StringBuffer(s); int i=0; do{ b.replace(i,i+1,sb.substring(i,i+1).toUpperCase()); i=b.indexOf(" ",i)+1; } while(i>0 && i 
 package com.raj.samplestring; /** * @author gnagara */ public class SampleString { /** * @param args */ public static void main(String[] args) { String[] stringArray; String givenString = "ramu is Arr Good boy"; stringArray = givenString.split(" "); for(int i=0; i 

Aqui está uma solução fácil:

 public class CapitalFirstLetters { public static void main(String[] args) { String word = "it's java, baby!"; String[] wordSplit; String wordCapital = ""; wordSplit = word.split(" "); for (int i = 0; i < wordSplit.length; i++) { wordCapital = wordSplit[i].substring(0, 1).toUpperCase() + wordSplit[i].substring(1) + " "; } System.out.println(wordCapital); }} 

Meu código depois de ler algumas respostas acima.

 /** * Returns the given underscored_word_group as a Human Readable Word Group. * (Underscolors are replaced by spaces and capitalized following words.) * * @param pWord * String to be made more readable * @return Human-readable string */ public static String humanize2(String pWord) { StringBuilder sb = new StringBuilder(); String[] words = pWord.replaceAll("_", " ").split("\\s"); for (int i = 0; i < words.length; i++) { if (i > 0) sb.append(" "); if (words[i].length() > 0) { sb.append(Character.toUpperCase(words[i].charAt(0))); if (words[i].length() > 1) { sb.append(words[i].substring(1)); } } } return sb.toString(); } 
 public String UpperCaseWords(String line) { line = line.trim().toLowerCase(); String data[] = line.split("\\s"); line = ""; for(int i =0;i< data.length;i++) { if(data[i].length()>1) line = line + data[i].substring(0,1).toUpperCase()+data[i].substring(1)+" "; else line = line + data[i].toUpperCase(); } return line.trim(); } 

Muito mais simples com regexes:

 Pattern spaces=Pattern.compile("\\s+[az]"); Matcher m=spaces.matcher(word); StringBuilder capitalWordBuilder=new StringBuilder(word.substring(0,1).toUpperCase()); int prevStart=1; while(m.find()) { capitalWordBuilder.append(word.substring(prevStart,m.end()-1)); capitalWordBuilder.append(word.substring(m.end()-1,m.end()).toUpperCase()); prevStart=m.end(); } capitalWordBuilder.append(word.substring(prevStart,word.length())); 

Saída para input: “this sentence Has Weird caps”

Esta sentença tem limites estranhos