web-dev-qa-db-fra.com

Comment couper la chaîne après la première ligne du paragraphe

J'ai la chaîne comme indiqué ci-dessous:

XXX:Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur cursus lacus sed
justo faucibus id pellentesque nunc porttitor. Sed venenatis tempor dui, nec mattis dolor
ultrices at. Duis suscipit, dolor sed fringilla interdum, magna libero tempor quam, sed
molestie dui urna sed tellus.

Comment puis-je ajouter une restriction et couper la chaîne à la première ligne? (en utilisant javascript).

Le résultat final auquel je m'attendais est le suivant:

XXX:Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur...
28
Zhen
var firstLine = theString.split('\n')[0];
63
Tomalak

Utilisez le paramètre de limite facultatif pour des performances accrues

Tomalak sa réponse est correcte, mais si vous voulez vraiment ne faire correspondre que la première ligne , il sera utile de passer la seconde optionnelle limit paramètre. De cette façon, vous évitez qu'une longue chaîne (avec des milliers de lignes) soit divisée jusqu'à la fin avant le retour de la première correspondance.

En définissant l'option facultative limit sur 1 nous indiquons à la méthode de renvoyer le résultat dès que la première correspondance est trouvée avec en conséquence une augmentation des performances.

var firstLine = theString.split('\n', 1)[0];

En savoir plus sur le paramètre limit par exemple ici dans les documents MDN

33
Wilt

S'il y a des retours de ligne réels, et pas seulement une sorte de wrapping automatique, vous pouvez le faire:

str = str.substr(0, str.indexOf("\n"));

http://jsfiddle.net/f6uBT/

11
Alex Turpin
function getFirstLine(str){
    var breakIndex = str.indexOf("\n");

   // consider that there can be line without a break
    if (breakIndex === -1){
        return str;
    }

    return str.substr(0, breakIndex);
}

getFirstLine('first line\nsecond line'); // first line

getFirstLine('text without line break'); // text without line break
2
ujeenator

Discussion intéressante sur le "texte enveloppé" ... C'est peut-être plus un problème HTML qu'un problème javascript ...

Peut-être que ce que vous voulez vraiment, c'est limiter la hauteur de l'élément HTML et définir "overflow = caché". Ensuite, il affichera autant qu'il peut tenir sur une seule ligne et masquera le reste. (mais vous n'obtiendrez pas le petit "..." à la fin)

1
Nick Perkins

vous devez utiliser cette fonction

string.split (séparateur, [limite])

séparateur - le caractère à diviser ["." ou\r\n ...] limite - facultatif, int pour limiter le nombre maximal de caractères

1
Davido