Je travaille sur une grande mission de données pour l'école et pour faire fonctionner mon code, j'ai besoin de filtrer les mots d'un fichier texte. Bien sûr, je lis le fichier et filtre les choses dont je n'ai pas besoin avec replaceAll ("[^ a-zA-Z0-9]", "");Java filtre les mots hors du fichier, même si rare aucun espace se produisent
Mais cela pose un problème. Parce que je filtre sur les espaces et il y a quelques cas particuliers comme:
wobbewy!'--'Wobbewy,'
Je reçois des mots comme:
wobbewywobbewy
Y at-il de toute façon de filtrer les mots sur les espaces et filtrer aussi ces cas particuliers sans faire comme une énorme quantité de déclarations si?
code Exemple de ce qui se passe après avoir essayé le correctif:
while ((thisLine = bufferedReader.readLine()) != null) {
String[] woord = thisLine.toString().trim().split("\\s+");
for(int i=0; i<woord.length; i++){
normalWord = woord[i].replaceAll("[^a-zA-Z]+", " ");
normalWord = normalWord.toLowerCase();
Puis-je obtenir outpuit comme:
xxv (espaces multiples) mon
Pourquoi ne pas utiliser ("[^ a-zA-Z0-9]", ""), donc! '-' sera remplacé par un espace et la séparation par espace fonctionnera. Alternativement: Ne remplacez rien et recherchez les mots en utilisant regex, par exemple en utilisant le motif \ w +. – kevcodez
Bien sûr, tout ce problème est bien pire lorsqu'il s'agit de langages qui n'utilisent pas les espaces pour séparer les mots. Dans certaines langues (thaï, IIRC?), Casser simplement un bloc de texte en mots nécessite un dictionnaire et un algorithme de retour arrière récursif. –