2013-06-13 11 views
9

heißt. Ich möchte jeden String in einen modifizierten Camel Case oder Titel Case konvertieren, indem ich einige vordefinierte Bibliotheken benutze, anstatt meine eigenen Funktionen zu schreiben.Konvertiere einen String in ein modifiziertes Camel Case in Java oder Titel Case, wie es sonst

Zum Beispiel "HI tHiS is SomE Statement"-"Hi This Is Some Statement"

Regex oder jede Standard-Bibliothek wird mir helfen.

Ich fand bestimmte Bibliotheksfunktionen in Eclipse wie STRING.toCamelCase(); gibt es so etwas vorhanden?

+2

Vielleicht meinst du [Titel Fall] (http://en.wikipedia.org/wiki/Sentence_case#Title_case)? "[Camel case] (http://en.wikipedia.org/wiki/CamelCase)" bezieht sich normalerweise auf Dinge wie "HiThisIsSomeStatement" (keine Trennzeichen zwischen den Wörtern). –

+0

Entschuldigung, ich wusste nichts über den Titel. Danke Ted Hopp. Ich möchte Titel Case – takrishna

Antwort

11

ich die unten verwendet, um dieses Problem zu lösen.

import org.apache.commons.lang.StringUtils; 
StringUtils.capitalize(MyString); 

Dank Ted Hopp für den Hinweis auf zu Recht, dass die Frage TITEL Fall gewesen, anstatt modifizierte CAMEL CASE haben sollte.

Camel Case ist in der Regel ohne Leerzeichen zwischen Wörtern.

15

Sie können ganz einfach die Methode schreiben, das zu tun:

public static String toCamelCase(final String init) { 
    if (init==null) 
     return null; 

    final StringBuilder ret = new StringBuilder(init.length()); 

    for (final String word : init.split(" ")) { 
     if (!word.isEmpty()) { 
      ret.append(word.substring(0, 1).toUpperCase()); 
      ret.append(word.substring(1).toLowerCase()); 
     } 
     if (!(ret.length()==init.length())) 
      ret.append(" "); 
    } 

    return ret.toString(); 
} 
+2

Statt 'wordstring (0, 1) .toUpperCase()' könnten Sie tun 'Character.toUpperCase (word.charAt (0))' – fge

1

Refer:

static String toCamelCase(String s){ 
      String[] parts = s.split(" "); 
      String camelCaseString = ""; 
      for (String part : parts){ 
       if(part!=null && part.trim().length()>0) 
       camelCaseString = camelCaseString + toProperCase(part); 
       else 
        camelCaseString=camelCaseString+part+" "; 
      } 
      return camelCaseString; 
     } 

     static String toProperCase(String s) { 
      String temp=s.trim(); 
      String spaces=""; 
      if(temp.length()!=s.length()) 
      { 
      int startCharIndex=s.charAt(temp.indexOf(0)); 
      spaces=s.substring(0,startCharIndex); 
      } 
      temp=temp.substring(0, 1).toUpperCase() + 
      spaces+temp.substring(1).toLowerCase()+" "; 
      return temp; 

     } 
    public static void main(String[] args) { 
    String string="HI tHiS is SomE Statement"; 
    System.out.println(toCamelCase(string)); 
    } 
+0

Dieser Code löst eine 'StringIndexOutOfBoundsException', wenn es zwei aufeinanderfolgende Leerzeichen in der 'Zeichenfolge' (oder wenn die' Zeichenfolge' leer ist). Es wird eine 'NullPointerException' ausgelöst, wenn 'String' null ist. –

+0

@FlorentBayle oh lassen Sie aktualisierte Antwort sehen !! – NFE