# Wort in String ersetzen



## Lanzettlich (4. Feb 2013)

Hallo!

Im bestimmte Buchstaben oder Wörter in String zu ersetzen kann man ja replace("Hallo", "") verwenden.
Wie ersetze ich aber in einem String das Wort "Hallo", egal, welche Buchstaben von "Hallo" klein oder groß geschrieben sind?


----------



## Spewer (4. Feb 2013)

```
String target = "FOOBar";
    target = target.replaceAll("(?i)foo", "");
```

Quelle : Hier


----------



## Timothy Truckle (4. Feb 2013)

Tue einfach, was 
	
	
	
	





```
replaceAll()
```
 (laut API) intern selbst macht und passe es für Dich an:
	
	
	
	





```
Pattern.compile("HaLlO", Pattern.CASEINSENSITIVE).matcher(str).replaceAll("good bye");
```
bye
TT


----------



## Lanzettlich (4. Feb 2013)

Hallo und danke für eure Antworten!

Ich habe das mit beiden Möglichkeiten probiert, es geht aber beides nicht.
Mein Code:

```
String word = "Hallo";
String string = "hallo";

Pattern.compile(word, Pattern.CASE_INSENSITIVE).matcher(string).replaceAll("");
```

Doch dieser Code geht leider nicht.
Wenn ich das richtig verstehe:
Im String string sollte nach "hallo" gesucht und dann mit "" ersetzt werden, was aber leider nicht funktioniert. Entdeckt ihr einen Fehler?


----------



## faetzminator (4. Feb 2013)

Vielleicht solltest du das Resultat von [c]Pattern.compile.....replaceAll("")[/c] noch verwenden?


----------



## Lanzettlich (4. Feb 2013)

faetzminator hat gesagt.:


> Vielleicht solltest du das Resultat von [c]Pattern.compile.....replaceAll("")[/c] noch verwenden?


Das Resultat wird dann auch ausgegeben, aber wie gesagt wird da nur "Hallo" ersetzt und nicht "hallo".


----------



## Timothy Truckle (4. Feb 2013)

Lanzettlich hat gesagt.:


> Das Resultat wird dann auch ausgegeben,


Nein, wird es nicht.
Noch einer, der nicht rafft, was "immutable" bedeutet...

bye
TT


----------



## Lanzettlich (4. Feb 2013)

Timothy Truckle hat gesagt.:


> Nein, wird es nicht.
> Noch einer, der nicht rafft, was "immutable" bedeutet...
> 
> bye
> TT


In meinem Code wird es dann schon ausgegeben, ich habe in meinem Forenpost lediglich gepostet, welchen Code ich verwende.


----------



## Spewer (4. Feb 2013)

Immutable object - Wikipedia, the free encyclopedia


----------



## Lanzettlich (4. Feb 2013)

Funktioniert leider so noch immer nicht:

```
String s = Pattern.compile(wortDasErsetztWerdenSoll, Pattern.CASE_INSENSITIVE).matcher(stringDerDasWortEnthaelt).replaceAll(hiermitSollDasWortErsetztWerden);
System.out.println(s);
```


----------



## Timothy Truckle (4. Feb 2013)

Lanzettlich hat gesagt.:


> In meinem Code wird es dann schon ausgegeben, ich habe in meinem Forenpost lediglich gepostet, welchen Code ich verwende.


Dann hast Du vielleicht die falschen Erwartungen und/oder kannst Deine Logausgabe (wenn man System.out.println() so bezeichnen will) nicht interpretieren:
	
	
	
	





```
@Test
	public void testReplacePattern() throws Exception {
		String word = "Hallo";
		String string = "hallo";

		Assert.assertEquals(word + " in " + string + " replaced by nothing",
				"",
				Pattern.compile(word, Pattern.CASE_INSENSITIVE).matcher(string)
						.replaceAll(""));
	}
```
Wir be mir grün.

bye
TT


----------



## SlaterB (4. Feb 2013)

die Gegenrede ist hier teils unnötig heftig, dennoch bleibt zum Aktuellen nur zu erwidern, dass zu unbekannten Code-Ausschnitten nicht viel zu sagen ist,
dabei war es vorher schon recht konkret, nur vollständige Testprogramme haben letztlich im vertracken Widerspruchsfall eine Aussage


```
public class Test2 {
    public static void main(String[] args)  {
        String word = "Hallo";
        String string = "hallo";

        String s = Pattern.compile(word, Pattern.CASE_INSENSITIVE).matcher(string).replaceAll("");
        System.out.println("s: " + s);
    }
}
```
und die Aussage kann hier nur sein: funktioniert alles bestens


----------

