2009-12-07 4 views
0

J'essaie de faire un peu d'analyse en Java et j'utilise Cobra HTML Parser pour obtenir le HTML dans un DOM puis j'utilise XPath pour obtenir les nœuds que je veux. Quand je descends au niveau souhaité que j'appelle node.getTextContents(), mais cela me donne une chaîne commeJava Inner Text (getTextContents()) Problème

"\n\n\nValue\n-\nValue\n\n\n" 

est-il construit dans le moyen de se débarrasser des sauts de ligne? Je voudrais faire une expression régulière comme

(?:\s*([^-]+)\s*-\s*([^-]+)\s*) 

sur le texte intérieur et je préfère vraiment ne pas avoir à traiter avec les possibles différents symboles de l'espace blanc entre le texte.

Exemple d'entrée:

Value 
- 
Value 

Merci

+0

je crois (en fait assez sûr) que .Net retourneraient « Value - Valeur » étant donné la même entrée, ce qui a évidemment les sauts de ligne à l'intérieur du nœud. Donc, une meilleure façon de dire cela, est que l'analyseur DOM peut me redonner cette chaîne avec les espaces blancs non pertinents (pour moi au moins)? – LostNomad311

+0

Tout compte fait, je suis plutôt lent. Vous avez raison, les RegExes fonctionnent très bien, pas les miens - en Java. Cependant, Java traite RegEx différemment de .Net et JavaScript. Quoi qu'il en soit, après avoir simplifié le mien, j'ai trouvé que '(?: \ S *) ([^ -] +) (?: \ S *)' est le plus proche de ce que je veux. Ma dernière question, et je l'espère moins compliquée que la précédente, est de savoir comment me débarrasser des espaces de résidus uniques renvoyés par le dernier RegEx (il y a un espace ou un saut de ligne). chaque 'Valeur' ​​dans l'exemple)? – LostNomad311

Répondre

0

Vous pouvez utiliser String.replaceAll().

String trimmed = original_string.replaceAll("\n", ""); 

Le premier argument est une expression régulière: vous pouvez remplacer tous les blocs contigus de blancs dans la chaîne originale avec replaceAll("\\s+", "") par exemple.

+0

C'est bizarre, ça marche pour moi. –

0

Je ne suis pas tout à fait sûr que je compris la question, mais le moyen le plus simple de supprimer tous les espaces sont:.

String s = node.getTextContents() replaceAll ("\\ s", » ");

Si vous voulez simplement vous débarrasser de l'espace avant/arrière, utilisez trim().