web-dev-qa-db-fra.com

Comment supprimer un saut de ligne dans une chaîne

Je veux supprimer le saut de ligne de la chaîne si ma chaîne se termine par un saut de ligne.

Sub linebreak(myString)
If Len(myString) <> 0 Then
If Right$(myString, 1) = vbCrLf Or Right$(myString, 1) = vbNewLine Then myString = Left$(myString, Len(myString) - 1)
End If
End Sub
30
Code Hungry

vbCrLf et vbNewLine sont en fait deux caractères, pour changer en Right$(myString, 2)

Sub linebreak(myString)
    If Len(myString) <> 0 Then
        If Right$(myString, 2) = vbCrLf Or Right$(myString, 2) = vbNewLine Then 
            myString = Left$(myString, Len(myString) - 2)
        End If
    End If
End Sub
22
chris neilsen
str = Replace(str, vbLf, "")

Ce code prend tout le saut de ligne du code

si vous voulez juste le dernier:

If Right(str, 1) = vbLf Then str = Left(str, Len(str) - 1)

est la façon dont vous avez essayé OK.


Mettre à jour:

line feed = ASCII 10, form feed = ASCII 12 et retour de chariot = ASCII 13. Nous voyons clairement ici ce que nous savons tous: le PC provient de la machine à écrire (électrique)

vbLf est Chr (10) et signifie que le curseur saute d'une ligne plus bas (machine à écrire: faites tourner le rouleau) vbCr est Chr (13) signifie que le curseur saute au début (machine à écrire: retirez le rouleau)

Dans DOS, un saut de ligne est toujours VBCrLf ou Chr (13) & Chr (10), dans les fichiers de toute façon, mais par ex. aussi avec les zones de texte en VB.

Dans une cellule Excel, par contre, un saut de ligne n’est que VBLf, la deuxième ligne commence alors à la première position même sans vbCr. Avec vbCrLf, allez dans une cellule plus profonde.

Cela dépend donc de l'endroit où vous lisez et obtenez votre chaîne de . Si vous voulez supprimer tous les vbLf (Char (10)) et vbCr (Char (13)) de votre tring, vous pouvez le faire comme ceci: 

strText = Replace(Replace(strText, Chr(10), ""), Chr(13), "")

Si vous ne voulez que supprimer le dernier, vous pouvez le tester comme suit:

If Right(str, 1) = vbLf or Right(str, 1) = vbCr Then str = Left(str, Len(str) - 1)
52
Moosli

Comme vous utilisez Excel, vous n'avez pas besoin de VBA pour cela, vous pouvez simplement utiliser la fonction "Nettoyer" intégrée, cela supprime les retours à la ligne, les sauts de ligne, etc., par exemple:

=Clean(MyString)
6
Matt Donnan

juste ça:

str = Replace(str, vbCrLf, "")
4
decas
mystring = Replace(mystring, Chr(10), "")
3
user3117021

Je sais que ce post est très ancien mais je n'ai rien trouvé qui puisse le faire. Donc, j'ai finalement mis cela ensemble sur tous les forums. 

Cela supprimera tous les sauts de ligne de gauche et de droite et supprimera toutes les lignes vides. Ensuite, réglez tout pour bien paraître. Modifier comme bon vous semble. J'ai également fait un qui supprime tous les sauts de ligne, si intéressé. TY

    Sub RemoveBlankLines()
    Application.ScreenUpdating = False
    Dim rngCel As Range
    Dim strOldVal As String
    Dim strNewVal As String

    For Each rngCel In Selection
        If rngCel.HasFormula = False Then
            strOldVal = rngCel.Value
            strNewVal = strOldVal
            Debug.Print rngCel.Address

            Do
            If Left(strNewVal, 1) = vbLf Then strNewVal = Right(strNewVal, Len(strNewVal) - 1)
            If strNewVal = strOldVal Then Exit Do
                strOldVal = strNewVal
            Loop

            Do
            If Right(strNewVal, 1) = vbLf Then strNewVal = Left(strNewVal, Len(strNewVal) - 1)
            If strNewVal = strOldVal Then Exit Do
                strOldVal = strNewVal
            Loop

            Do
            strNewVal = Replace(strNewVal, vbLf & vbLf, "^")
            strNewVal = Replace(strNewVal, Replace(String(Len(strNewVal) - _
                        Len(Replace(strNewVal, "^", "")), "^"), "^", "^"), "^")
            strNewVal = Replace(strNewVal, "^", vbLf)

            If strNewVal = strOldVal Then Exit Do
                strOldVal = strNewVal
            Loop

            If rngCel.Value <> strNewVal Then
                rngCel = strNewVal
            End If

        rngCel.Value = Application.Trim(rngCel.Value)
        End If
    Next rngCel
    Application.ScreenUpdating = True
End Sub
1
Mouthpear

Remplacer (yourString, vbNewLine, "", vbTextCompare)

1
Divyank Sabhaya
Private Sub Form_Load()
    Dim s As String

    s = "test" & vbCrLf & "this" & vbCrLf & vbCrLf
    Debug.Print (s & Len(s))

    s = Left(s, Len(s) - Len(vbCrLf))
    Debug.Print (s & Len(s))
End Sub
0
user1537510