2009-11-19 7 views
-1

Comment puis-je supprimer la dernière ligne d'un bloc de texte dans le script java sans utiliser des boucles. (Uniquement à l'aide regex) par exemple.,regex pour enlever la dernière ligne du bloc de texte

« L'Internet est un monde système de réseaux informatiques interconnectés qui utilisent la norme TCP/IP pour desservir des milliards d'utilisateurs dans le monde entier, c'est un réseau de réseaux constitué de millions de réseaux privés et publics, universitaires, commerciaux et gouvernementaux & & ". La dernière ligne a toujours "& &".

+1

« dernière ligne », comme dans la dernière phrase? –

+0

@Sidharth: seriez-vous en mesure de nous montrer le résultat que vous attendez? – RageZ

+0

Demandez-vous comment supprimer la dernière phrase ou juste le "&&" ou littéralement la dernière ligne (je pense que ce serait quelque chose comme ceci "\ n. * && $")? – zfedoran

Répondre

4
var str = "The ... and government networks&&"; 
str.replace(/\.[^.]+&&$/,'.'); 

Si par la dernière ligne, vous voulez dire la dernière phrase. Et la dernière phrase ne contient pas de point.

+0

S'il vous plaît pouvez-vous expliquer – Sidharth

+0

@Sidharth: recherche. après quoi que ce soit pas un point, le '' && et devrait être à la fin de la chaîne ... – RageZ

+0

localiser une période (\.), suivi par le plus grand nombre possible de tout, mais les périodes ([^.] +) suivi && et la fin de la chaîne ($). Remplacez ce truc localisé par rien (''). le/entourant ce qui ressemble à une chaîne fait du premier paramètre un motif plutôt qu'une chaîne. – Don

1

si vous avez besoin de la nouvelle ligne a « nouvelle ligne d'ordinateur »

var str = "he ... and government networks&&"; 
str.replace(/\n[^\n]*&&$/,''); 
1

Comme cela?

"First Line\n.sth.&&.\nAnother\nLast Line&&Last Word".replace(/\n.*&&.*$/,''); 

Résultat

First Line 
..sth.&&. 
Another 

Selon votre question, La dernière ligne ont toujours "& &"., cela ne signifie pas que cela doit se terminer par & &, non? et d'autres lignes peuvent également avoir & &.

1

Votre texte n'a pas les nouvelles lignes en elle, donc je suppose que vous voulez dire de supprimer le dernier sentence-

string.replace(/\.[^\.]+\.?$/,'.'); 

If you want to be sure not to remove the only sentence, use 

string.replace(/(\S+\.)[^\.]+\.?$/,'$1') 

Vous aurez besoin de soulever des charges plus lourdes pour éviter de couper les lignes qui ont des abréviations avec des périodes, comme M. Jones, le Dr Spock, Mme Jones et St. Andrew. Comme enlever leurs périodes avant l'amputation et les remplacer après. (Séparer ici pour plus de lisibilité)

string= string.replace(/\b(Mr|Dr|Mrs|St)\. /g,'$1 ') 
.replace(/(\S+\.)[^\.]+\.?$/,'$1').replace(/\b(Mr|Dr|Mrs|St) +/g,'$1. ') 
+0

Il est impopulaire pour analyser HTML avec expressions régulières. L'analyse du langage naturel est simplement impossible. – Kobi

1

Si votre texte n'a pas de sauts de ligne, il n'y a pas de "dernière ligne". Il n'existe que lorsqu'il est affiché dans le navigateur, mais pas dans le texte. Bien que vous insisiez "n'utiliser que regex", une regex ne peut pas le trouver.
Vous pouvez vous en sortir si vous utilisez un fixed width font, mais c'est peu probable. Vous pouvez également boucler jusqu'à atteindre la hauteur cible, mais cela n'est pas souhaitable.

Une meilleure approche ici pour utiliser CSS. Voici une version simplifiée qui montre les deux premières lignes et cache le reste:

p.TwoLines { 
    overflow: hidden; /* no scroll bars */ 
    font-size: 10pt; /* here I have a fixed size, for example */ 
    line-height: 1.5; 
    height: 30pt /* 1.5*2lines *10sizeofline */; 

    width: 300px; /* not needed, just to see the effect */ 
} 

Preview: http://jsbin.com/ufihe3

Questions connexes