# Sonderzeichen in String suchen



## matzze2000 (10. Dez 2007)

Hallo, ich habe ein paar Probleme mit einer Zeichenfolge die ich in einem String suchen möchte. Und zwar lese ich eine Zeile aus einer Datei aus und dort können Platzhalter drin sein. Die beginnen immer mit einem "$" und enden mit einem ";". Sehen also so in etwa aus: $Platzhalter;

Da durchaus mehrere in einer Zeile sein können dachte ich wäre es ganz gut erstmal die Zeile nach nem "$" zu durchsuchen und dann zu gucken was das für ein Platzhalter ist. Prinzipiell nich das Problem, habe auch schon mit der match Funktion gearbeitet.

Das Problem ist nur, dass bei der Match Funktion das $ für ein Zeilenende steht. Laut der Doku soll sowas hier funktionieren:



> \p{Punct} Punctuation: One of !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~



Aber wenn ich sowas schreibe wie matches("\p{$}"); oder so wie es da steht mit {Punct} wird das sofort von Eclipse als Fehler unterstrichen... Wie kann ich denn nu nach dem "$" suchen?


----------



## Guest (10. Dez 2007)

matzze2000 hat gesagt.:
			
		

> Hallo, ich habe ein paar Probleme mit einer Zeichenfolge die ich in einem String suchen möchte. Und zwar lese ich eine Zeile aus einer Datei aus und dort können Platzhalter drin sein. Die beginnen immer mit einem "$" und enden mit einem ";". Sehen also so in etwa aus: $Platzhalter;
> 
> Da durchaus mehrere in einer Zeile sein können dachte ich wäre es ganz gut erstmal die Zeile nach nem "$" zu durchsuchen und dann zu gucken was das für ein Platzhalter ist. Prinzipiell nich das Problem, habe auch schon mit der match Funktion gearbeitet.
> 
> ...



Schreib einfach \$ und schon sollte es gehen


----------



## matzze2000 (10. Dez 2007)

Die Idee hatte ich auch schon, wird leider genauso als Fehler unterstrichen: "invalid Escape Sequence"


----------



## SlaterB (10. Dez 2007)

```
public class Test
{

    public static void main(String[] args)
        throws Exception
    {
        String st = "$P";
        String st2 = "P";

        Pattern p = Pattern.compile("\\p{Punct}");
        Pattern p2 = Pattern.compile("\\$");
        
        System.out.println(p.matcher(st).find());
        System.out.println(p.matcher(st).matches());
        System.out.println(p.matcher(st2).find());
        System.out.println(p.matcher(st2).matches());

        System.out.println(p2.matcher(st).find());
        System.out.println(p2.matcher(st).matches());
        System.out.println(p2.matcher(st2).find());
        System.out.println(p2.matcher(st2).matches());

    }
}
```


----------



## matzze2000 (10. Dez 2007)

Ahhhhhhhh...

Danke, also mit "\\$" funktionierts jetz...


----------

