# String in Gross und Kleinbuchstaben umwandeln



## MiMa (12. Jun 2017)

Hallo,
ich möchte gerne einen String "DER TEXT" in "Der Text" uwandeln.
Lower_case und UpperCase wandeln immer den gesamten String um.
Gibt es eine Funktion, indem man einen Stringabschnitt erkennt und dann den ersten Buchstaben gross macht?
Ansonsten müsste ich eine Funktion schreiben, in dem man ein Leerzeichen erkennt und dann das nächste Zeichen von lower_case nach upper_case umwandelt.
Danke


----------



## Viktim (12. Jun 2017)

Du könntest einen Regex (regulären Ausdruck)  nehmen, der alle Buchstaben klein macht, außer die nach einem Leerzeichen oder am Anfang der Zeile


----------



## Joose (12. Jun 2017)

Nein Java selbst bietet keinen solche Methode an. Entweder schreibst du sie dir selber oder du verwendest ein Library welche sowas schon implementiert hat


----------



## Viktim (12. Jun 2017)

Wenn du dir das selber schreibst, könntest du mit split bei einem Leerzeichen den String zerteilen, und dann hättest du schonmal jedes einzelne Wort in einem Array....
Dann müsstest du das bloß noch durchgehen, den ersten Buchstaben so übernehmen, den Rest klein machen und das wieder zusammenfügen...
Stichworte:
- Substring
- Split
- toLowerCase
- charAt

Viel Glück 

PS: Wenn du gar nicht weiterkommen solltest, meld dich nochmal


----------



## RalleYTN (12. Jun 2017)

Spalte den String an allen Leerzeichen.
Ersetze das erste Zeichen jedes Wortes durch dessen Großbuchstaben.
Setze den String wieder zusammen.

Wenn du jetzt noch dafür sorgen möchtest dass alles der deutschen Rechtschreibung entspricht, dann brauchst du eine Datenbank in der alle Nomen der deutschen Sprache eingetragen sind.


----------



## MiMa (12. Jun 2017)

Vielen Dank für Eure Antworten.
Ich habe bereits eine Funktion geschrieben, die das macht.
Dabei habe ich den String zerlegt und wieder zusammengesetzt.

Soweit funtkioniert das ganz gut, habe aber ein Problem mit einem Rückgabewert.

Mit Apache Tika lese ich derzeit die id3 Tags von Mp3 Dateien aus und schreibe diese zum vergleichen in ein Array.
Die Rückgabewerte werden als String zurückgegeben. Hier beim Tag Album.

```
tagArray[2] = metadata.get("xmpDM:album");      // Album
```
Ergebnis:

```
ID-Tag 0    Melanie Fiona
ID-Tag 1    Give It To Me Right
ID-Tag 2    null
ID-TAG 3    222812.296875
```
Wenn ich jetzt meine umwandlungsfunktion bei ID-Tag 2 anwende, dann bekomme ich eine NullPointerException.
Bedeutet das , das der Inhalt "null" überhaupt kein String ist?
Auch das habe ich versucht um den Inhalt dieses Tags bei einem Wert von "null" einen Strign zu erzwingen.

```
tagArray[2] = metadata.get("xmpDM:album").toString;      // Album
```
Aber das wollte auch nicht funktionieren. Das Array ist auch als String-Array definiert.

```
String[] tagArray = new String[4];
```
Dann habe ich versucht den Inhalt des Arrays bei "null " einen anderen Wert "Single" zu zu weisen.

```
if (tagArray[2] == "null") {
            tagArray[2] = "Single";}
```
Ich weiss das diese "null" nicht 0 als Zahl oder String bedeutet, sondern einfach keinen inhalt hat.
Dann habe ich mit folgender Zeile versucht

```
if (tagArray[2].isEmpty()) {
            tagArray[2] = "Single";}
```
Auch das ergibt einen NullPointerException?
Ich bin jetzt mit meinem Latain am ende.
Kennt jemand da eine Lösung?
Danke


----------



## tommysenf (12. Jun 2017)

```
if (tagArray[2] == null) {
            tagArray[2] = "Single";}
```


----------



## thet1983 (12. Jun 2017)

schau mal:

```
for(String s : new String[]{"Eins","Zwei",null,"Vier"}){
    if(s == null || s.isEmpty()){
        s = "Drei";
    }
    System.out.println(s);
        }
```


----------



## MiMa (12. Jun 2017)

Vielen Dank jetzt klappt es.

```
if (tagArray[2] == null) {
            tagArray[2] = "Single";}
```
Die Gänsefüsschen, waren das Problem, oh Schande über mich 

Wobei dieser hier auch hätte funktionieren müssen?

```
if (tagArray[2].isEmpty()) {
            tagArray[2] = "Single";}
```
Habe das noch mal versucht, geht aber nicht?


----------



## thet1983 (12. Jun 2017)

schau mal hier
wenn dein wert zb: 

```
String s = "";
```
wäre dann könnte man diese Methode anwenden.
in deinem fall ist der wert aber null also muss man wie oben prüfen 


MiMa hat gesagt.:


> tagArray[2] == *null*


----------



## MiMa (12. Jun 2017)

Vielen Dank


----------

