2010-12-01 20 views

Répondre

4

Vous avez besoin:

str = str.replaceAll("World", "\\\\_\\\\_\\\\_\\\\_\\\\_"); 

See it.

\ est le caractère d'échappement dans les chaînes Java. Donc pour signifier un littéral \ vous devez lui échapper avec un autre \ comme \\.

\ est le char d'échappement pour le moteur regex ainsi. Ainsi, une chaîne \\ en Java sera envoyée au moteur regex sous la forme \ qui n'est pas traitée littéralement mais sera utilisée pour échapper le caractère suivant.

Pour passer de \\ au moteur regex, vous devez avoir \\\\ dans la chaîne Java.


Puisque vous remplacez une chaîne (non motif) par une autre chaîne, il n'y a vraiment pas besoin de regex, vous pouvez utiliser la méthode replace de la classe String comme:

input = input.replace("World", "\\_\\_\\_\\_\\_"); 

2

Vous devez utiliser 4 antislashs pour en insérer un seul. Le point est: dans les chaînes Java littérales, la barre oblique inverse est un caractère d'échappement, de sorte que la chaîne littérale "\" est une seule barre oblique inverse. Mais dans les expressions régulières, le backslash est également un caractère d'échappement. L'expression régulière \ correspond à une seule barre oblique inverse. Cette expression régulière en tant que chaîne Java devient "\\".

Donc, essayez quelque chose comme ceci:

String str = "hello world"; 
System.out.println(str.replace("world","\\\\_\\\\_\\\\_\\\\"));