10/08/2008, 00:59
Voila une version plus allégée, avec un algo différent, sans utiliser de liste:
Donc en fait $modulo contient le reste de la division, donc en gros, si j'ai une phrase de 15 caractères, que je veux divisé en 3 lignes de 5 (maxChars = 5), le module est 0, mais si je veux le divisé par 4 caractères, la division 15/4 retourne 3, et il reste 3.
Donc si le modulo est égal à 0, c'est qu'on a nombre de ligne tout rond, sinon c'est qu'il reste des caractères à envoyés à la fin.
tcl
proc split_line {texte maxChars} {
set strLength [string length $texte]
set numLines [expr {$strLength / $maxChars}]
set modulo [expr {$strLength % $maxChars}]
for {set i 0; set j 0} {$i < $numLines} {incr i; incr j $maxChars} {
puts [string range $texte $j [expr {$j + ($maxChars-1)}]]
}
if {$modulo != 0} {
puts [string range $texte $j end]
}
}
Donc en fait $modulo contient le reste de la division, donc en gros, si j'ai une phrase de 15 caractères, que je veux divisé en 3 lignes de 5 (maxChars = 5), le module est 0, mais si je veux le divisé par 4 caractères, la division 15/4 retourne 3, et il reste 3.
Donc si le modulo est égal à 0, c'est qu'on a nombre de ligne tout rond, sinon c'est qu'il reste des caractères à envoyés à la fin.