Je pratique le Java moi-même à partir d'un livre. J'ai lu le chapitre sur le traitement de texte et les classes d'emballage et j'ai tenté l'exercice ci-dessous.Java - Comment délimiter des guillemets simples autour d'une phrase, mais pas une apostrophe dans un mot
Mot Compteur
écrire un programme qui demande à l'utilisateur le nom d'un fichier. Le programme devrait afficher le nombre de mots que le fichier contient. J'ai choisi ce poème aléatoire en ligne pour tester ce programme. Je mets le poème dans un fichier appelé TheSniper.txt:
Two hundred yards away he saw his head;
He raised his rifle, took quick aim and shot him.
Two hundred yards away the man dropped dead;
With bright exulting eye he turned and said,
'By Jove, I got him!'
And he was jubilant; had he not won
The meed of praise his comrades haste to pay?
He smiled; he could not see what he had done;
The dead man lay two hundred yards away.
He could not see the dead, reproachful eyes,
The youthful face which Death had not defiled
But had transfigured when he claimed his prize.
Had he seen this perhaps he had not smiled.
He could not see the woman as she wept
To the news two hundred miles away,
Or through his very dream she would have crept.
And into all his thoughts by night and day.
Two hundred yards away, and, bending o'er
A body in a trench, rough men proclaim
Sadly, that Fritz, the merry is no more.
(Or shall we call him Jack? It's all the same.)
Voici une partie de ma sortie ... Pour des fins de débogage, j'imprimer chaque ligne et les mots dans le fichier jusqu'à y compris ceux du ligne actuelle.
Enter the name of a file: TheSniper.txt
Two hundred yards away he saw his head;
Two
hundred
yards
away
he
saw
his
head
Line contains 8 words
He raised his rifle, took quick aim and shot him.
He
raised
his
rifle
took
quick
aim
and
shot
him
Line contains 18 words
...
À la fin, mon programme affiche que le poème a 176 mots. Cependant, Microsoft Word compte 174 mots. Je vois en imprimant chaque mot que je me trompe d'apostrophes et de guillemets simples. Voici la dernière partie du poème dans ma sortie où le problème se produit:
(Or shall we call him Jack? It's all the same.)
Or
shall
we
call
him
Jack
It
s
all
the
same
Line contains 176 words
The file has 176 words
Dans ma liste de paramètres StringTokenizer, quand je ne délimite pas une seule citation, qui ressemble à une apostrophe, le mot « Il est » est compté comme un. Cependant, quand je le fais, il compte comme deux mots (It et s) parce que l'apostrophe, qui ressemble à une seule citation, est délimitée. En outre, la phrase "Par Jove, je l'ai eu!" est mal compté quand je ne délimite pas la citation/apostrophe unique. Est-ce que l'apostrophe et la citation simple ont le même caractère quand il s'agit de les délimiter? Je ne suis pas sûr de savoir comment délimiter des guillemets simples qui entourent une phrase mais pas une apostrophe entre un mot comme "C'est". J'espère que je suis assez clair en posant ma question. S'il vous plaît demander des éclaircissements. Toute orientation est appréciée. Je vous remercie! Pourquoi ne pas utiliser un autre scanner pour chaque ligne pour compter le nombre de mots?
Y at-il des raisons pour lesquelles vous ne pouvez pas utiliser des espaces (espace, tabulation, newline) comme délimiteurs? Dans la phrase «Par Jove, je l'ai eu!», Peu importe si le premier mot est «By» et le dernier est «lui!» À des fins de _counting_ mots, même si ça ne regarde pas aussi agréable lors de l'impression quels mots ont été trouvés (ce qui est seulement pour le débogage, par votre commentaire). (Voir aussi http://stackoverflow.com/questions/8813779/) –
Merci! Ça a du sens. – camelCoder