Split selon le nombre max de caractères voulu, en tenant compte des retours chariot et des chaînes non-sécables


Contenu du snippet

Private Function SplitAfter(ByVal Value As String, ByVal SplitCount As Integer) As String
  Return SplitAfter(Value, SplitCount, "-"c, False)
End Function
Private Function SplitAfter(ByVal Value As String, ByVal SplitCount As Integer, ByVal SeparChar As Char) As String
  Return SplitAfter(Value, SplitCount, SeparChar, False)
End Function
Private Function SplitAfter(ByVal Value As String, ByVal SplitCount As Integer, ByVal RemoveBreak As Boolean) As String
  Return SplitAfter(Value, SplitCount, "-"c, RemoveBreak)
End Function
Private Function SplitAfter(ByVal Value As String, ByVal SplitCount As Integer, ByVal SeparChar As Char, ByVal RemoveBreak As Boolean) As String
  Dim ResultString As String = String.Empty
  If RemoveBreak Then Value = Value.Replace(CChar(System.Environment.NewLine), " "c)
  Dim Lines() As String = Value.Split(CChar(System.Environment.NewLine))
  For iLine As Integer = 0 To Lines.Length - 1
    Do While Lines(iLine).Length > SplitCount
      Dim Pos As Integer = Lines(iLine).LastIndexOf(" "c, SplitCount)
      Select Case Pos
        Case Is = -1
          If Not SeparChar = Nothing Then
            ResultString &= Lines(iLine).Substring(0, SplitCount - 1) & SeparChar & System.Environment.NewLine
            Lines(iLine) = Lines(iLine).Substring(SplitCount)
          Else
            Dim Pos2 As Integer = Lines(iLine).IndexOf(" "c, SplitCount)
            Select Case Pos2
              Case Is = -1
                ResultString &= Lines(iLine)
                Lines(iLine) = String.Empty
              Case Else
                ResultString &= Lines(iLine).Substring(0, Pos2) & System.Environment.NewLine
                Lines(iLine) = Lines(iLine).Substring(Pos2 + 1)
            End Select
          End If
        Case Else
          ResultString &= Lines(iLine).Substring(0, Pos) & System.Environment.NewLine
          Lines(iLine) = Lines(iLine).Substring(Pos + 1)
      End Select
    Loop
    ResultString &= Lines(iLine)
    If iLine < Lines.Length - 1 Then ResultString &= System.Environment.NewLine
  Next iLine
  Return ResultString
End Function

Compatibilité : VB 2005, VB 2008, VB.NET 1.x

Disponible dans d'autres langages :

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.