Couper une chaîne tous les X caractères

11 Juin 2013 à 00:00 Programmation

Je ne publierai plus rien sur ce blog. Un nouveau blog existe maintenant. Il se nomme Hardly Smart.

Vous pourrez y retrouver des astuces plus larges sur l'informatique ainsi que mes anciens billets de blog.

Je vous souhaite une bonne lecture sur Hardly Smart.


Voici un petit code simple que j\'ai dû mettre en place pour afficher un texte dynamiquement pour une application Android.

Je devais couper une String tous les 30 caractères mais en faisant attention de ne pas couper en plein milieu d\'un mot. Comme je suis un type sympa voici le code qui j\'en suis sûr pourra servir. Le voici en JAVA, JavaScript et PHP.

Je vous explique vite fait le code mais je pense que vous le compredrez facilement.

Je coupe ma String dès que je trouve un espace. Puis je parcours mon tableau en affectant la taille de la String en cours à ma variable taille. En même temps j\'écris le contenu de la case du tableau en cours dans ma variable titre en prenant soin de rajouter l\'espace que j\'avais supprimé. Et si lorsque je parcours mon tableau ma taille est supérieur à 30 je rajoute un retour chariot et je réinitialise ma taille à 0. Et c\'est reparti pour un tour.

Source

JAVA :

int taille = 0;
String[] texte = nom.split(\" \");
String titre = \"\";
for(int i = 0; i < texte.length; i++) {
    taille = taille + texte[i].length();
    titre += texte[i] + \" \";
    
    if(taille > 30) { //remplacer par le nombre de caratères
        titre += \"n\";
        taille = 0;
    }
}

JavaScript :

var taille = 0;
var texte = nom.split(\" \");
var titre = \"\";
for(var i = 0; i < texte.length; i++) {
    taille = taille + texte[i].length();
    titre += texte[i] + \" \";
    
    if(taille > 20) {
        titre += \"\\n\";
        taille = 0;
    }
}

PHP :

$taille = 0;
$texte = explode(\" \", $nom);
$titre = \"\";
for($i = 0; $i < count($texte); $i++) {
    $taille = $taille . strlen($texte[$i]);
    $titre .= $texte[$i] . \" \";
    
    if($taille > 20) {
        $titre .= \"
\"; $taille = 0; } }

Articles liés

Les commentaires ont été désactivés.

4 commentaires

Jerry 19 Septembre 2013 à 00:00

Utiliser count() plutôt que strlen() en PHP, pour les tableaux.

Ah, et pour la saisie des commentaires, un petit strtolower() sur la réponse (oui / non) ne serait pas un luxe ^^

Jérémy.

BaBeuloula 19 Septembre 2013 à 00:00

Merci de ton commentaire je vais faire la modif.

Pour le strtlower, tu as raison je vais faire cela, je n\'y avais pas pensé. Maintenant c\'est fait.

Jerry 19 Septembre 2013 à 00:00

Re salut !

En fait ça ne va pas ; j\'ai regardé le code avec attention vu que je ne comprenais pas la logique d\'un script aussi simple !! En PHP, le caractère de concaténation (pour les chaînes) à utiliser est le . (point), tandis que le caractère d\'addition (pour les variables numériques) à utiliser est le + (plus) . Il manque également le dollar devant l\'index i (ligne 6) ensuite le script fonctionne parfaitement. Aussi, la fonction wordwrap( ) fait presque la même chose. Encore bravo pour le CSS de ton site, j\'aime beaucoup !

BaBeuloula 19 Septembre 2013 à 00:00

Oui autant pour moi, je suis parti de mon code JAVA lors du dev mon applis Android. Et j\'ai fais ça vite fait ^_^