2012-12-13 2 views
-1

저는 아파치 WordUtils를 사용하여 String의 모든 첫 글자를 대문자로 사용했습니다.하지만 모든 단어가 대문자로 시작해야합니다.문자열의 첫 글자 만 대문자로 시작합니다. java

import org.apache.commons.lang.WordUtils; 

public class FirstCapitalLetter { 


    public static void main(String[] args) { 
     String str = "STATEMENT OF ACCOUNT FOR THE PERIOD OF"; 
     str = WordUtils.capitalizeFully(str); 
     System.out.println(str); 

    } 
} 

내 출력은 다음과 같습니다 :

Statement Of Account For The Period Of 

내가 내 출력

Statement of Account for the Period of 

가 어떻게 이것을 달성 할 수되고 싶어 여기에 내가 가진 무엇인가?

+0

이것은 모든 게시자 용이며 이미 이미 언급 한대로 수행합니다. – ErrorNotFoundException

+0

WordUtils에서이 작업을 수행 할 수 있을지 의심 스럽습니다. 당신은 당신 자신의 방법을 쓰고 대문자로 만들지 말아야 할 단어 목록을 유지해야 할 것입니다. –

+0

나는 준비된 유틸리티가 있다고 생각하지 않는다. 그러나 이것이 항상 패턴이 될 것이라는 확신이 있다면, 대문자로 바꾸고 (계정)을 (계정)과 (마침표)를 (마침표)로 교체 기능을 사용하여 바꿀 수 있습니다. – Scorpion

답변

2

1) 투자하지 않으려는 문자열의 집합을 만들기에서 작동합니다 경우에만 귀하의 문자열의 각 단어에 대한

0

는 U는 세 부분으로 문자열을 중단 할 필요가

3. 기간에 대한
2. 계정 1. 성명. 길이가 3 이상이이이 특정한 경우

+0

String을 파일에서 하나의 문자열로 읽는 중입니다. – ErrorNotFoundException

1

실행 WordUtils.capitalizeFully (세트)의 예외 :

Set<String> doNotCapitalize = new HashSet<>(); 
doNotCapitalize.add("the"); 
doNotCapitalize.add("of"); 
doNotCapitalize.add("for"); 
... 

2) 공백

String[] words = "STATEMENT OF ACCOUNT FOR THE PERIOD OF".split(" "); 

3

하여 문자열을 분할) (E)의 세트에 있지 않은 단어 만 대문자의 배열을 반복 xceptions :

StringBuilder builder = new StringBuilder(); 
for(String word : words){ 
    String lower = word.toLowerCase(); 
    if(doNotCapitalize.contains(lower){ 
      builder.append(lower).append(" "); 
    } 
    else{ 
      builder.append(WordUtils.capitalizeFully(lower)).append(" "); 
    } 
} 
String finalString = builder.toString(); 
관련 문제