Come maiuscole ogni prima lettera di una parola in una stringa?

Possibile duplicato:
Capitalizza il primo carattere di ogni parola in una stringa Java

Ho una stringa: “ciao buon vecchio mondo” e voglio fare il maiuscolo ogni prima lettera di ogni parola, non l’intera stringa con .toUpperCase (). C’è un helper java esistente che fa il lavoro?

Dai un’occhiata a ACL WordUtils .

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

Ecco il codice

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

non so se c’è una funzione ma questo farebbe il lavoro nel caso non ce ne sia uno:

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

Produzione :

Questo è il primo test capitale di parola.

Questo è il primo test capitale di Word.

Ecco una soluzione molto semplice e compatta. str contiene la variabile di qualunque cosa tu voglia fare in maiuscolo.

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

È meglio lavorare con StringBuilder perché String è immutabile ed è inefficiente generare nuove stringhe per ogni parola.

Cercando di essere più efficienti in termini di memoria che dividere la stringa in più stringhe e utilizzare la strategia mostrata da Darshana Sri Lanka. Inoltre, gestisce tutti gli spazi bianchi tra le parole, non solo il carattere “”.

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

Output: Java è un linguaggio di programmazione orientato agli oggetti.

Inoltre puoi dare un’occhiata alla libreria StringUtils . Ha un sacco di cose interessanti.

 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 

Ecco una soluzione semplice:

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

Il mio codice dopo aver letto alcune risposte di cui sopra.

 /** * Returns the given underscored_word_group as a Human Readable Word Group. * (Underscores 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(); } 

Molto più semplice con regex:

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

Output per input: “questa frase ha strane protezioni”

Questa frase ha strani berretti