2009-09-14 7 views
0

Comment faire ma propre fonction de retour à la ligne pour les chaînes? Je veux que chaque ligne ne dépasse pas 50 caractères et respecte les CRLF existants.créer mon propre wrapper de mots pour la chaîne

+0

Voulez-vous dire tous les 50 caractères que vous voulez ajouter une nouvelle ligne s'il n'y a pas déjà? – RichardOD

Répondre

1

Quelque chose comme ça, il va vous aider à démarrer (juste un SAMLE rapide i purée ensemble):

Private Sub Doit()  
    Dim Source As String = "" 
    Source &= "How to make my own word wrap function for string, I want each line to be no longer than 50chars and take respect existing CRLFs" & vbCrLf & vbCrLf 
    Source &= "So this will be a new row." 
    Dim wrappedtext As String = wrap(Source, 20, vbNewLine) 
    MsgBox(wrappedtext) 
End Sub 

Function wrap(ByVal text As String, ByVal maxlength As Integer, ByVal newline As String) As String 

    Dim tmp() As String = Split(text.Replace(vbCrLf, " | "), " ") 
    Dim ret As String = "" 
    Dim wrk As String = "" 
    For Each word As String In tmp 
     If word = "|" Then 
      ret &= newline 
      wrk = "" 
     ElseIf word = "" Then 

     Else 

      If Len(wrk & word) <= maxlength Then 
       wrk &= " " & word 
      Else 
       ret &= wrk & newline 
       wrk = word & " " 
      End If 

     End If 
    Next 
    If wrk <> "" Then ret &= wrk 
    Return ret 
End Function 
+0

merci, bon code, mais parfois laisse des mots du milieu! a également des espaces doubles de temps en temps. – Tom

+0

Oui. Je l'ai juste jeté ensemble donc c'est juste un "prototype". Mais ce ne devrait pas être une tâche difficile de réparer à partir de là. – Stefan

0

De quel point de vue? Architecture SW?

Jetez un coup d'œil au motif décorateur. Si vous aimez travailler avec des flux, dans le livre "Heads First: Design Patterns" un modificateur de chaîne est proposé. C'est en Java, mais le concept de programmation générale est décrit dans le bon sens. Certaines pages sont manquantes mais vous pouvez trouver de nombreuses informations sur le here.

L'algorithme lui-même est trivial, n'est-ce pas?

Questions connexes