środa, 26 stycznia 2011

Jak zamenić " na \" w java za pomocą String.replaceAll()

Z kategorii tak dziwne, że aż śmieszne. Otóż zamiana " w String'u w Javie na \" może przysporzyć pewnych trudności.

Używając oferowanej przez String'a funckji: replaceAll(), zapisujemy:

String s = "Adam Mickewicz \"Pan Tadeusz\" ";
s = s.replaceAll("\"", "\\\"");

efekt - żaden. Taka operacja nic z naszym String'iem nie zrobi. Należy pamiętać, że pierwszy argument funkcji replaceAll, to wyrażenie regularne. Dlatego znak '\', musi być dodatkowo wyeskejpowany dla regexp'a, czyli dopiero:

s = s.replaceAll("\\\"", "\\\\\"");

robi to o co nam chodziło. Zapis iście komiczny, ale co zrobisz...

2 komentarze:

  1. Można skorzystać z metody replace(), która jako pierwszy argument nie przyjmuje wyrażenia regularnego, a bierze tekst "dosłownie".

    Sprawdź:

    s = s.replace("\"", "\\\"");

    Ta metoda również podmienia wszystkie wystąpienia danej sekwencji (mimo braku w nazwie "All").

    OdpowiedzUsuń