web-dev-qa-db-fra.com

Supprimer des espaces d'une chaîne dans VB.NET

Comment supprimez-vous les espaces d'une chaîne dans VB.NET?

2015: plus récent LINQ & lambda.

  1. Comme il s’agit d’un ancien Q (et réponse), nous avons simplement pensé à le mettre à jour avec les méthodes 2015 les plus récentes.
  2. L'espace "original" peut faire référence à des espaces non-espace (par exemple, tabulation, nouvelle ligne, séparateur de paragraphe, saut de ligne, retour à la ligne, etc., , Etc.).
  3. De plus, Trim () supprime uniquement les espaces à l'avant et à l'arrière de la chaîne, mais pas à l'intérieur de la chaîne; Par exemple: "Espaces de début et de fin" deviendra "Espaces de début et de fin", mais les espaces intérieurs sont toujours présents.

Function RemoveWhitespace(fullString As String) As String
    Return New String(fullString.Where(Function(x) Not Char.IsWhiteSpace(x)).ToArray())
End Function

Cela supprimera ALL (blanc), les espaces en tête, en fin et dans la chaîne.

19
Joseph Lee

Pour supprimer TOUS les espaces:

 myString = myString.Replace(" ", "")

Pour supprimer les espaces précédant et :

myString = myString.Trim()

Remarque: ceci supprime tout espace blanc, ainsi les nouvelles lignes, les onglets, etc. seront supprimés.

69
David

Les "espaces" de la publication d'origine pourraient faire référence à des espaces, et aucune réponse ne montre encore comment supprimer ALL whitespace d'une chaîne. Pour cela, les expressions régulières sont l'approche la plus flexible que j'ai trouvée.

Ci-dessous se trouve une application console où vous pouvez voir la différence entre remplacer uniquement des espaces ou tous les espaces.

Pour en savoir plus sur les expressions régulières .NET, consultez http://msdn.Microsoft.com/en-us/library/hs600312.aspx et http://msdn.Microsoft.com/en-us/ bibliothèque/az24scfc.aspx

Imports System.Text.RegularExpressions
Module TestRegExp
    Sub Main()
        ' Use to match all whitespace (note the lowercase s matters)
        Dim regWhitespace As New Regex("\s")

        ' Use to match space characters only
        Dim regSpace As New Regex(" ")

        Dim testString As String = "First Line" + vbCrLf + _
        "Second line followed by 2 tabs" + vbTab + vbTab + _
        "End of tabs"

        Console.WriteLine("Test string :")
        Console.WriteLine(testString)

        Console.WriteLine("Replace all whitespace :")
        ' This prints the string on one line with no spacing at all
        Console.WriteLine(regWhitespace.Replace(testString, String.Empty))

        Console.WriteLine("Replace all spaces :")
        ' This removes spaces, but retains the tabs and new lines
        Console.WriteLine(regSpace.Replace(testString, String.Empty))

        Console.WriteLine("Press any key to finish")
        Console.ReadKey()
    End Sub
End Module
14
Jason S

Réduire une chaîne pour qu’elle ne contienne pas deux espaces ou plus. Chaque instance de 2 ou plusieurs espaces sera réduite à 1 espace. Une solution simple:

While ImageText1.Contains("  ")                     '2 spaces.
    ImageText1 = ImageText1.Replace("  ", " ")      'Replace with 1 space.
End While
13
Brian Jasmer

Cela supprimera uniquement les espaces, correspond à la fonctionnalité SQL de rtrim (ltrim (myString)) 

Dim charstotrim() As Char = {" "c}
myString = myString .Trim(charstotrim) 
3
Lukek

Qu'en est-il de la solution Regex.Replace?

myStr = Regex.Replace(myStr, "\s", "")
3
user1697111

Vous pouvez également utiliser une petite fonction qui parcourt et supprime les espaces.

C'est très propre et simple.

Public Shared Function RemoveXtraSpaces(strVal As String) As String
     Dim iCount As Integer = 1
     Dim sTempstrVal As String

     sTempstrVal = ""

     For iCount = 1 To Len(strVal)
        sTempstrVal = sTempstrVal + Mid(strVal, iCount, 1).Trim
     Next

     RemoveXtraSpaces = sTempstrVal

     Return RemoveXtraSpaces

End Function
2
Trish

Essayez ce code pour trim a String

Public Function AllTrim(ByVal GeVar As String) As String
    Dim i As Integer
    Dim e As Integer
    Dim NewStr As String = ""
    e = Len(GeVar)
    For i = 1 To e
        If Mid(GeVar, i, 1) <> " " Then
            NewStr = NewStr + Mid(GeVar, i, 1)
        End If
    Next i
    AllTrim = NewStr
    ' MsgBox("alltrim = " & NewStr)
End Function