Comment définissez-vous le délimiteur pour un scanner vers l'un ou l'autre? ou nouvelle ligne? p>
J'ai essayé:
scanner.usedelimiter (modèle.ca ("(\ n) |;")); code>
Mais ça ne marche pas. P>
3 Réponses :
En règle générale, dans les motifs, vous devez doubler le donc, essayez p> ou p prétoxe > modifier em> strud>: si correspondant à un ou plusieurs des note em>: je n'ai pas essayé ceci. p> p> \ code>.
\ r \ n code> est le problème, vous voudrez peut-être essayer ceci. : p>
\ r code>,
\ n code> et
; code >. P>
Vous pouvez aller de toute façon. Si vous utilisez deux backslashes, le compilateur REGEX voit \ n code> et l'interprète en tant que séquence d'échappement pour une surface linefeed. Si vous utilisez une barre oblique inverse, le compilateur REGEX voit un personnage de lignage réel, qu'il correspond littéralement. Mais je vais certainement aller avec la version de la classe de caractères:
"[\\ n;]" code> ou
"[\ n;]" code>; Il est plus facile de lire aussi bien que plus efficace.
@Alan Moore: Ah, d'accord ... Je viens de supposer qu'une pause littérale de ligne serait mal interprétée.
Regarder le commentaire de l'OP, on dirait que c'était une ligne différente (\ r \ n ou crlf) qui était le problème.
Voici ma réponse, qui gérerait plusieurs points-virgules et des fins de ligne dans les deux formats ( peut ou peut ne pas être souhaité) p> entraînerait 1,2,3,4,5 p> J'ai essayé normal \ n et \\ N - Tous deux travaillés dans mon cas, bien que je suis d'accord si vous avez besoin d'une barre oblique inverse que vous voudriez doubler, car c'est un caractère d'échappement. Il arrive tellement que dans ce cas, "\ n" devient le caractère désiré avec ou sans l'extra '\' p> p>
Comme vous l'avez découvert, vous devez rechercher des séparateurs de ligne Vous devez avoir l'habitude de rechercher les deux types de séparateur, ainsi que le plus ancien style MAC brancher dans votre code d'échantillon que vous obtenez: p> ceci vous suppose Voulez-vous correspondre exactement à une nouvelle ligne ou à un point-virgule à la fois. Si vous voulez correspondre à un ou plus em> vous pouvez le faire à la place: p> \ r \ n code> (CRLF) au lieu du style UNIX
\ n code> (lf seul). Mais que si le texte contient les deux? Cela arrive beaucoup; En fait, lorsque j'appuie la source de cette page même, je vois les deux variétés.
\ r code> (Cr seulement). Voici une façon de le faire: p>
scanner.useDelimiter("[;\r\n]+");
Trouvé le bogue, je dois utiliser (\ r \ n) |; J'étais analytique quelque chose comme ceci: String; Nombre \ R \ N ... et cela n'a pas pris quelque chose comme 100 \ r en tant que nombre.