如何将大写字母中的每个第一个字母大写?
可能重复:
在stringJava中利用每个单词的首字母大写
我有一个string:“你好,旧世界”,我想大写每个单词的每个第一个字母,而不是整个string与.toUpperCase()。 有没有一个现有的java helper来完成这项工作?
看看ACL的WordUtils 。
WordUtils.capitalize("your string") == "Your String"
这是代码
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);
我不知道是否有一个function,但是如果没有这个function的话,
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;i<l;++i) { if(i>0) 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 ); } }
输出:
这是第一个WORD资本testing。
这是第一个字的资本testing。
这是一个非常简单,紧凑的解决scheme。 str包含你想做大写字母的variables。
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());
最好使用StringBuilder,因为String是不可变的,为每个单词生成新的string效率不高。
试图比将string分割成多个string更有记忆效率,并使用斯里兰卡达斯纳(Darshana Sri Lanka)所示的策略。 另外,处理单词之间的所有空白,而不仅仅是“”字符。
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);
你也可以看看StringUtils库。 它有一堆很酷的东西。
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<sb.length()); System.out.println(sb.length()); } }
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<stringArray.length;i++){ if(!Character.isUpperCase(stringArray[i].charAt(0))){ Character c = stringArray[i].charAt(0); Character change = Character.toUpperCase(c); StringBuffer ss = new StringBuffer(stringArray[i]); ss.insert(0, change); ss.deleteCharAt(1); stringArray[i]= ss.toString(); } } for(String e:stringArray){ System.out.println(e); } } }
这是一个简单的解决scheme:
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); }}
我的代码在阅读了几个以上的答案之后。
/** * 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(); }
正则expression式非常简单:
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()));
input输出:“这句话有怪异的帽子”
这句话有怪异的帽子