Hoe vervang ik speciale tekens in een string?

Ik heb een string met veel speciale tekens. Ik wil die allemaal verwijderen, maar alfabetische tekens behouden.

Hoe kan ik dit doen?


Antwoord 1, autoriteit 100%

Dat hangt ervan af wat je bedoelt. Als je ze gewoon kwijt wilt, doe dan dit:
(Update: blijkbaar wil je ook cijfers behouden, gebruik dan de tweede regel)

String alphaOnly = input.replaceAll("[^a-zA-Z]+","");
String alphaAndDigits = input.replaceAll("[^a-zA-Z0-9]+","");

of het equivalent:

String alphaOnly = input.replaceAll("[^\\p{Alpha}]+","");
String alphaAndDigits = input.replaceAll("[^\\p{Alpha}\\p{Digit}]+","");

(Al deze kunnen aanzienlijk worden verbeterd door het regex-patroon vooraf te compileren en op te slaan in een constante)

Of, met Guave:

private static final CharMatcher ALNUM =
  CharMatcher.inRange('a', 'z').or(CharMatcher.inRange('A', 'Z'))
  .or(CharMatcher.inRange('0', '9')).precomputed();
// ...
String alphaAndDigits = ALNUM.retainFrom(input);

Maar als je tekens met accenten wilt omzetten in iets zinnigs dat nog steeds ascii is, kijk dan eens naar deze vragen:


Antwoord 2, autoriteit 38%

Ik gebruik dit.

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

Het vervangt alle speciale tekens uit de tekenreeks.

Hier

\w : Een woordteken, een afkorting voor [a-zA-Z_0-9]

\W : Een niet-woord karakter


Antwoord 3, autoriteit 6%

U kunt de volgende methode gebruiken om alfanumerieke tekens te behouden.

replaceAll("[^a-zA-Z0-9]", "");

En als u alleen alfabetische tekens wilt behouden, gebruikt u dit

replaceAll("[^a-zA-Z]", "");

Antwoord 4, autoriteit 4%

Vervang speciale tekens door

replaceAll("\\your special character","new character");

ex:om alle voorkomen van * te vervangen door witruimte

replaceAll("\\*","");

*deze verklaring kan slechts één type speciaal teken tegelijk vervangen


Antwoord 5, autoriteit 4%

Volgens het voorbeeld van Andrzej Doyle’s antwoord, denk ik dat de betere oplossing is om org.apache.commons.lang3.StringUtils.stripAccents():

package bla.bla.utility;
import org.apache.commons.lang3.StringUtils;
public class UriUtility {
    public static String normalizeUri(String s) {
        String r = StringUtils.stripAccents(s);
        r = r.replace(" ", "_");
        r = r.replaceAll("[^\\.A-Za-z0-9_]", "");
        return r;
    }
}

6

U kunt eenvoudige reguliere uitdrukkingen gebruiken op snaren om alle speciale tekens te vinden of patroon- en matcherklassen te gebruiken om door de gebruiker gedefinieerde snaren te zoeken / wijzigen / wijzigen. Deze link heeft een aantal eenvoudige en gemakkelijk te begrijpen voorbeelden voor reguliere expressies: http: //www.vogella .de / artikelen / javaregularexpressions / artikel.html


7

U kunt Unicode voor dat ongewenste personage van KarakterMap Tool in Window PC en toevoegen \ U b.v. \ u00A9 voor auteursrechtsymbool.
Nu kunt u die tekenreeks gebruiken met die specifieke rommelcaharacter, verwijder geen ongewenste karakter, maar vervangt u met de juiste Unicode.


8

Gebruik voor spaties “[^ A-Z A-Z 0-9]” Dit patroon

Other episodes