Java >> Java tutorial >  >> Tag >> char

Fjern alle ikke-alfabetiske tegn fra en String-array i java

Jeg forsøger at skrive en metode, der fjerner alle ikke-alfabetiske tegn fra en Java String[] og konverter derefter strengen til en streng med små bogstaver. Jeg har forsøgt at bruge regulære udtryk til at erstatte forekomsten af ​​alle ikke-alfabetiske tegn med "" .Men det output, jeg får, er ikke i stand til at gøre det. Her er koden

static String[] inputValidator(String[] line) {
    for(int i = 0; i < line.length; i++) {
       line[i].replaceAll("[^a-zA-Z]", "");
       line[i].toLowerCase();
    }
    return line;
}

Men hvis jeg prøver at levere et input, der ikke har alfabeter (sig - eller . ) outputtet består også af dem, da de ikke fjernes.

Eksempel på input

A dog is an animal. Animals are not people.

Output, som jeg får

A
dog
is
an
animal.
Animals
are
not
people.

Forventet output

a
dog
is
an
animal
animals
are
not
people

Svar

Problemet er, at dine ændringer ikke gemmes, fordi strenge er uforanderlige. Hvert af metodekaldene returnerer en ny String repræsenterer ændringen med den nuværende String forbliver den samme. Du skal blot gemme den returnerede String tilbage i arrayet.

line[i] = line[i].replaceAll("[^a-zA-Z]", "");
line[i] = line[i].toLowerCase();

Fordi hver metode returnerer en String du kan kæde dine metodekald sammen. Dette vil udføre det andet metodekald på resultatet af det første, så du kan udføre begge handlinger på én linje.

line[i] = line[i].replaceAll("[^a-zA-Z]", "").toLowerCase();

Java tag