Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Errore utilizzando String.replaceAll con espressioni regolari

0 views
Skip to first unread message

Nicola

unread,
Jun 25, 2004, 4:02:27 AM6/25/04
to
Utilizzando la seguente istruzione:

System.out.println("@@uno@@@due@tre@@@@@quattro@".replaceAll("@+", "-"));

ho in risposta

-uno-due-tre-quattro-

come aspettato. Utilizzando la seguente:

System.out.println("@@uno@@@due@tre@@@@@quattro@".replaceAll("@+", "\\"));

invece di avere

\uno\due\tre\quattro\

si ottiente

java.lang.StringIndexOutOfBoundsException: String index out of range: 1

at java.lang.String.charAt(String.java:444)

at java.util.regex.Matcher.appendReplacement(Matcher.java:551)

at java.util.regex.Matcher.replaceAll(Matcher.java:661)

at java.lang.String.replaceAll(String.java:1663)

corredato da un Fatal Exception sulla VM. (1.4.2)

Qualcuno sa se e' un buco delle librerie o sto sbaglaindo qualcosa?


Grazie mille
Saluti

Piccione

unread,
Jun 25, 2004, 4:27:00 AM6/25/04
to
Con questo risolvi il problema :

System.out.println("@@uno@@@due@tre@@@@@quattro@".replaceAll("@+", \\\\));

Il motivo č presto detto : il metodo replaceAll() utilizza una regular
expression del tipo "\\". Nella chiamata al metodo gli \ vengono raddoppiati
per questioni di escaping.

Spero di essermi spiegato bene, anche se non ne sono molto sivuro :)
Ciao
P.


"Nicola" <nicola...@katamail.com> ha scritto nel messaggio
news:2bfd7392.04062...@posting.google.com...

0 new messages