2012-05-19 22 views
20

Sto tentando di rimuovere una parola specifica da una determinata stringa utilizzando la funzione replace() o replaceAll() ma questi rimuovono tutte le occorrenze di questa parola anche se fanno parte di un'altra parola!Rimuovere una parola specifica da una stringa

Esempio:

String content = "is not like is, but mistakes are common"; 
content = content.replace("is", ""); 

uscita:"not like , but mtakes are common"

uscita desiderato"not like , but mistakes are common"

Come posso sostituire solo parole intere da una stringa?

+0

se ha il tag Java, ovviamente ** Questo è in Java ** –

+0

È necessario utilizzare sostituire? Con lo spago? Devi cercare stringhe diverse da sostituire a e da? – UNECS

+0

dovresti aggiungere in quale parte di tutta la tua stringa vuoi sostituire, magari puoi usare un'espressione regolare per fare il lavoro –

risposta

36

Che diamine,

String regex = "\\s*\\bis\\b\\s*"; 
content = content.replaceAll(regex, ""); 

Ricorda è necessario utilizzare replaceAll(...) utilizzare le espressioni regolari, non replace(...)

  • \\b ti dà la parola confini
  • \\s* SOP su qualsiasi bianco spazio su entrambi i lati della parola che viene rimossa (se si desidera rimuovere anche questo).
+0

grazie mille che lo ha fatto =) –

+1

@MiDoBasha: prego –

+0

C'è ancora un problema rimasto. Se il sentenso era "cane è gatto", questo codice rimuove lo spazio da entrambi i lati della parola "è" e lo fa "dogcat". Penso sia meglio scrivere 'content = content.replaceAll (regex," ")' e quindi tagliare gli spazi alle estremità – Jasir

0

Puoi provare a sostituire "è" con "". Il è con uno spazio prima e uno dopo, sostituito da un singolo spazio.

Aggiornamento:

Per farlo funzionare per la prima "è" nella frase, anche fare un altro sostituzione di "è" per "". Sostituire il primo è e il primo spazio, con una stringa vuota.

+1

non funzionerà per il primo "è" nella frase. –

+0

Dal momento che potrebbe essere necessario gestire quel caso appositamente a causa della lettera maiuscola, forse più chiamate 'replaceAll()' funzionerebbero? Compreso un 'replaceAll (" is \. ",". ");' O qualcosa di simile a prendere l'ultimo ... –

+1

Hai ragione entrambi. Grazie. Ho aggiornato la risposta per includere quel caso. Se la stringa terminasse in "è", sarebbe necessario aggiungere anche quella, aggiungendo un totale di 3. Inoltre, come ha aggiunto Rob, anche le maiuscole dovrebbero essere contemplate in ulteriori chiamate replaceAll. –

5

content = content.replaceAll("\\Wis\\W|^is\\W|\\Wis$", "");

+0

non hai bisogno di 'replaceAll (...)' not 'replace (...)' per usare la magia delle espressioni regolari? –

+0

@HovercraftFullOfEels Scusa non testata. Modificato dopo i test. :) – Chip

Problemi correlati