# Strings: Groß-Kleinschreibung ignorieren



## magic_halli (1. Mrz 2007)

Hi,

ich will, wenn eine bestimmte Zeichenkette in einem String gleich am Anfang vorkommt, etwas mit dieser Zeichenkette machen. Allerdings soll es hierbei egal sein, ob die Zeichenkette groß- oder kleingeschrieben, oder nur mit einem Großbuchstabe beginnt etc.

```
if (str.startsWith("PARAMETERÜBERSICHT") == false) {
    //tue was
}
```
So wie ich das hier mache, wird die Groß- oder Kleinschreibung beachtet, oder?! (hab ich zumindest beim testen festgestellt)
Wie kann ich das "nicht-Casesensitve" machen?


----------



## Wildcard (1. Mrz 2007)

Es gibt equalsIgnoreCase, toUpperCase und toLowerCase.


----------



## magic_halli (2. Mrz 2007)

Hi,

irgendwie scheint das nicht so ganz zu funktionieren bei mir. Ich hole mir aus einer Textdatei jede Zeile raus und will diese auf ein vorkommendes Wort am Anfang überprüfen. Hierbei soll nun die Groß- und Kleinschreibung nicht berücksichtigt werden.
Alle Zeilen aus der einen, werden dann in einen andere Textdatei umgespeichert, außer die Zeilen, wo eben mein vorkommendes Wort vorkommt - diese werden nicht mit in die neue Textdatei aufgenommen.
Hier mal mein Code mit der (angeblichen) Ignorierung von Groß- und Kleinschreibung:

```
String str = "";
String path = curSession.GetCurrentDirectory();
String param = "PARAMETERÜBERSICHT";
StringBuffer strB = new StringBuffer();
    	    
BufferedReader buff = new BufferedReader(new FileReader(path + "relations.txt"));
    	     while ((str = buff.readLine()) != null) {
    	    	   if (str.startsWith(param.toLowerCase()) == false) {
    	        	 //hängt Zeile nur dann an, wenn Suchwort nicht vorkommt
    	             strB.append(str + "\n");
    	         }
    	     }

BufferedWriter buff2 = new BufferedWriter(new FileWriter(path + "relations_changed.txt"));
buff2.write(strB.toString());
buff2.close();
```

Irgendwas sagt mir, dass meine If-Bedingung nicht ganz hinhaut. Nur was ist falsch?


----------



## kama (2. Mrz 2007)

Hallo,

wie wäre es hiermit:

```
if (str.toLowerCase().startsWith(param.toLowerCase()) == false) {
```

MfG
Karl Heinz Marbaise


----------



## SlaterB (2. Mrz 2007)

allgemeine Tipps:
falls param sich nicht verändert,
speichere param.toLowerCase() einmalig in einer Variablen paramLower,
muss ja nicht für jede Zeile neu berechnet werden,

und wenn du das nächste mal nicht weißt ob der Vergleich klappt,
dann benutzt doch wenigstens Beispieltexte an stelle so eines komplizierten Programmes..


```
public class Test {
  public static void main(String[]args) {
   String line = "Hello World";
   String param = "HELLO"
   String paramLower = param.toLowerCase();

   boolean startsWith = line.startsWith(paramLower);
   System.out.println("line: "+line);
   System.out.println("paramLower: "+paramLower);
   System.out.println("startsWith: "+startsWith);
  }

}
```

siehst du wie deutlich alle Probleme werden wenn man sie nur alleine ordentlich betrachtet?


----------



## magic_halli (2. Mrz 2007)

Jawohl, das scheint zu klappen  :wink: 

Danke.


----------



## masta // thomas (2. Mrz 2007)

Nur als kleine Anmerkung am Rand:


> ```
> if (str.toLowerCase().startsWith(param.toLowerCase()) == false) {
> ```



== false zu benutzen ist absolut überflülssig. Es ist nur eine Tautologie zu der negation !, also schön if(!str.toLower......) benutzen. Man bekommt letztlich einen boolschen Wert zurückgeliefert und so wird mir dem auch gehandhabt. 
Komischerweise kommt keiner auf die Idee solche Abfragen zu gestalten wie if(var == 194 == true)...


----------

