2012-04-29 2 views
7

J'analyse un flux rss mal structuré et certaines des données renvoyées contiennent <p>at. Comment puis-je remplacer toutes les instances de <p>at avec un espace vide, en utilisant java?Remplacer la séquence de caractères dans java

Je connais la méthode .replace pour la classe String, mais je ne suis pas sûr de l'aspect de l'expression regex. J'ai essayé inputString.replace("<p>at", "") mais cela n'a pas fonctionné.

+1

S'il vous plaît montrer un SSCCE. Le 'replace()' n'utilise pas regex (et devrait donc juste fonctionner). 'replaceAll()' est celui qui utilise regex (que vous ne devriez donc pas utiliser). – BalusC

+0

Je voulais dire remplacerAll(). replace() ne fonctionnera pas car il faut remplacer un seul caractère. – user1154644

+0

Wow, êtes-vous * encore * sur Java 1.4 ou plus? Depuis Java 1.5 (sorti fin 2004), il existe deux méthodes 'replace()', l'une prenant 'char' et l'autre prenant' CharSequence' (donc aussi 'String'). En tout cas, cette "faute de frappe" est précisément l'une des raisons pour lesquelles vous devriez montrer un SSCCE. Afin que nous puissions simplement copier et coller sans changer pour voir nous-mêmes votre problème. – BalusC

Répondre

11

Essayez ceci:

inputString = inputString.replace("<p>at", ""); 

Sachez que la méthode replace() ne pas modifier le String en place (comme est le cas avec toutes méthodes de la classe String, parce qu'il est immuable), à la place, il renvoie un nouveau String avec les modifications - et vous devez sauvegarder la chaîne retournée quelque part.

En outre, la version ci-dessus de replace() ne reçoit pas d'expression régulière en tant qu'argument, juste la chaîne à remplacer et son remplacement.

+0

+1 Le point crucial ici est que les cordes sont *** immuables ***. Il est impossible (eh bien, à moins d'aller trop loin pour tromper le compilateur) de changer la valeur d'une chaîne. Toutes les méthodes qui "changent" une chaîne retourneront une nouvelle chaîne contenant la valeur modifiée. –

+0

c'était le problème, merci. – user1154644

+0

@JimGarrison spot-on !. J'ai ajouté cette information dans ma réponse –

1
inputString.replace("<p>at", "") // this will replace all match's with second parameter charsequence 
inputString.replaceAll("<p>at", "") // Replaces each substring of this string that matches the given regular expression with the given replacement. 

vous pouvez utiliser n'importe qui.

grâce

+0

Vous avez tort. Lisez le javadoc: http://docs.oracle.com/javase/6/docs/api/java/lang/String.html – BalusC

+0

OOPS ... merci de m'avoir corrigé. @BalusC –

Questions connexes