1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
Function ScinderChaine( Chaine As String , NbCar As Integer ) As String
'-------------------------------------------------------------------------------------------------
'-- Recupereration des mots et formatage des lignes
'-------------------------------------------------------------------------------------------------
Dim Tableau() As String
Dim TableauDeLigne As String() = New String(NbCar){}
Dim i As Integer
Dim i2 As Integer
TableauDeLigne(0) = ""
i2=0
'Coupe la chaine par espace
Tableau = Split(chaine, " ")
'Pour chaque colonne du tableau
For i = LBound(Tableau) To UBound(Tableau)
'Si la longeur de la ligne en cours + le mot étudié est inférieur au nombre de caractère autorisé par ligne
If(Len(TableauDeLigne(i2))+ Len(Tableau(i))+1 < NbCar) then
TableauDeLigne(i2) = TableauDeLigne(i2) + " " + Tableau(i)
Else
'Mise en place du mot sur une nouvelle ligne
TableauDeLigne(i2) = Trim(TableauDeLigne(i2))
i2= i2+1
TableauDeLigne(i2) = Tableau(i)
End If
Next i
'-------------------------------------------------------------------------------------------------
'-- justification ligne par ligne
'-------------------------------------------------------------------------------------------------
'Maintenant qu'on a les lignes, on calcul les espaces de chaque lignes
Dim nombreEspace As Integer 'Le nombre d'espace à placer
Dim chaineEnCours As String 'Copie de la chaine en cours de traitement
Dim chaineTemporaire As String 'Reception de la chaine formatée
Dim curseur As Integer 'Positionnement dans la chaine en cours
Dim nombreDePassage As Integer
Dim presenceEspace As Integer
For i = LBound(TableauDeLigne) To UBound(TableauDeLigne)-1 'On ne justifie pas la derniere ligne
chaineEnCours = TableauDeLigne(i)
curseur = 0
nombreEspace = NbCar - Len(chaineEnCours)
chaineTemporaire = ""
'Tant qu'il reste des espaces
While nombreEspace > 0
'Si on a pas d'espace avant, on le double
If((chaineEnCours(curseur)==" " ) And (presenceEspace == 0) ) then
chaineTemporaire = chaineTemporaire + " " + " "
nombreEspace = nombreEspace - 1
presenceEspace == 1
'Si on a un espace avant, on le double pas
ElseIf((chaineEnCours(curseur)== " ") And (presenceEspace == 1)) then
chaineTemporaire = chaineTemporaire + chaineEnCours(curseur)
ElseIf(chaineEnCours(curseur) != " ") then
chaineTemporaire = chaineTemporaire + chaineEnCours(curseur)
presenceEspace == 0
End If
If(curseur == NbCar-1) then 'Si on arrive à la fin de ligne, on retourne au début
curseur=0
End If
curseur = curseur+1
End While
TableauDeLigne(i) = chaineTemporaire
Next
'-------------------------------------------------------------------------------------------------
'-- retour du texte formaté
'-------------------------------------------------------------------------------------------------
Dim chaineFinale As String
For i = LBound(TableauDeLigne) To UBound(TableauDeLigne)
chainefinale = chaineFinale + TableauDeLigne(i)
Next
return chainefinale
End Function |
Partager