# Vokale aus String entfernen



## raktion (5. Feb 2012)

Habe ein Problem und zwar möchte ich gerne aus einem String die Vokale entfernen, leider hat es bisher nicht geklappt. Dann habe ich es erstmal andersherum versucht. Das klappt.


```
public class Entfernen {
	
	private final static String VOCALS = "aeiouAEIOU";
	
	public static String removeVocals(String s) {
		
		String e="";
		
		for (int i = 0; i < s.length();i++) {
			for (int j = 0; j < VOCALS.length();j++) 
				if (s.charAt(i) == VOCALS.charAt(j)) {
					e+= s.charAt(i);
				}	
		}System.out.println(e); 
                 return e;
			
	}
	
	public static void main(String[] args) {
		removeVocals("Test");
				
	}
}
```

Aber ich schaffe es nicht das ganze umzuschreiben, so das mir nachher für das Bsp in der Main nicht "e" sondern "Tst" ausgegeben wird, hat jemand ne Idee wi e ich das umschreiben könnte? Danke schonmal.


----------



## truesoul (5. Feb 2012)

Hallo und wie wäre es hier mit:

```
String text = "Hier steht ein Text, der ein paar Vokale mit Umlauten enthält";
text.replaceAll("[eauoiäeéüö]", "");
```
P.S nur klein geschriebene Vokale, aber es wird sicherlich kein Problem für dich sein, auch die groß geschriebenen Vokale auszuschließen


----------



## HimBromBeere (5. Feb 2012)

Ich würde mal drauf tippen, dass e += ... der Knackpunkt ist, weil man Strings nicht einfach addieren kann (schon alleine deswegen, weil String immutable, also unveränderlich sind). Arbeite lieber mit 
	
	
	
	





```
e = e.append(...)
```


----------



## Landei (5. Feb 2012)

HimBromBeere hat gesagt.:


> Ich würde mal drauf tippen, dass e += ... der Knackpunkt ist, weil man Strings nicht einfach addieren kann (schon alleine deswegen, weil String immutable, also unveränderlich sind). Arbeite lieber mit
> 
> 
> 
> ...



Natürlich geht das: [c]String s = "foo"; s += "bar";[/c] gibt [c]"foobar"[/c]. Dagegen hat 
	
	
	
	





```
String
```
keine 
	
	
	
	





```
append
```
-Methode (die gibt es nur in 
	
	
	
	





```
StringBuilder
```
und 
	
	
	
	





```
StringBuffer
```
)


----------



## truesoul (5. Feb 2012)

HimBromBeere hat gesagt.:


> Ich würde mal drauf tippen, dass e += ... der Knackpunkt ist, weil man Strings nicht einfach addieren kann (schon alleine deswegen, weil String immutable, also unveränderlich sind). Arbeite lieber mit
> 
> 
> 
> ...



Naja das hilft einem Anfänger wenig weiter, der nächste Post wäre dann wohl gewesen. String hat kein append? Was mach ich falsch?

```
e+= s.charAt(i);
```
ist ähnliches diesem: 


> Natürlich geht das: String s = "foo"; s += "bar"; gibt "foobar" .


----------



## WinterMensch (10. Dez 2012)

Ich habe ein ähnliches Problem, und zwar möchte ich alle Vokale entfernen die am Ende von Wörtern stehen. Leider weiß ich nicht wie das funktionieren soll...


----------



## gst (10. Dez 2012)

Dann wird es höchste Zeit, dass du dich mal zu RegEx einliest.


----------



## bone2 (10. Dez 2012)

order anfängerlstyle einfach auf leerzeichen splitten und den letzten buchstaben jedes wortes prüfen.


----------



## Marco13 (10. Dez 2012)

Lagere die INNERE for-Schleife in eine Methode aus, wie
private static boolean isVocal(char c) { ... }
damit du in der äußeren einfach machen kannst

```
if (!isVocal(s.charAt(i))) e+= s.charAt(i);
```


----------



## Pippl (10. Dez 2012)

raktion hat gesagt.:


> ```
> private final static String VOCALS = "aeiouAEIOU";
> .....
> if (s.charAt(i) == VOCALS.charAt(j)) {
> ...



Du schaut ob der aktuelle Buchstabe von Test in dem String VOCALS enthalten ist, wenn ja wird er bei 'e' angehängt. Du solltest '==' auf '!=' ändern.


----------



## Marco13 (10. Dez 2012)

Das reicht nicht, damit würde jeder nicht-Vokal mehrfach hinzugefügt (deswegen in Methode auslagern)


----------



## Landei (10. Dez 2012)

Schön der Reihe nach. Erst mal eine ordentliche isVocal-Methode:


```
public static boolean isVocal(char ch) {
   return "aeiouAEIUO".indexOf(ch) != -1;
}
```


----------

