Spatie in Split() word getrimt?

Status
Niet open voor verdere reacties.

bn2vs

Terugkerende gebruiker
Lid geworden
18 aug 2007
Berichten
1.705
Om een of andere reden worden spaties in de delimeter string die ik meegeef bij split() getrimt.

Deze code retourneert
Code:
        Dim str As String = "blaat1, blaat2, blaat3"
        Dim arr() As String = str.Split(", ")
        For Each arrEl As String In arr
            MessageBox.Show("|" & arrEl & "|")
        Next
|blaat1|
| blaat2|
| blaat3|

Hoe kan ik ervoor zorgen dat die spatie niet getimt word, zodat hij wel gesplit word, en niet in de output staat?

Alvast bedankt :)
 
2 dingen die je zou kunnen doen

1) in de for each loop zoeken naar een spatie in het begin van elke array item.

If arrEl.StartsWith(" ") = True Then
-- String.Remove functie hier --
End If

2) nadat je de string hebt ingelezen kan je alle komma-spaties vervangen voor komma's

String.Replace functie
 
Misschien is het al gelukt, maar toch wil ik een voorbeeld laten zien waarmee de spaties uit de woorden gehaald worden en de woorden netjes worden weergegeven met Show.

Ook laat ik met een If ... Then structuur zien om eerst te bepalen of er wel een spatie in zit, zodat de methode TrimStart goed werkt. (Voor de zekerheid dan, het zou best mogelijk zijn dat het ook zonder de If ... Then werkt, maar voor een vluggertje heb ik dat niet getest)

Dim str As String = "Blaat1, Blaat2, Blaat3"
Dim arr() As String = str.Split(", ")
For Each arrEl As String In arr
If arrEl(0) = Chr(32) Then arrEl = arrEl.TrimStart(Chr(32))
MessageBox.Show("|" & arrEl & "|")
Next

Dankzij TrimStart zullen er meerdere spaties worden opgeruimd als er meer daarvan aan de linkerkant gevonden worden. Onthoud dat het eerste teken in een string altijd plaats 0 is en geen plaats 1.
 
Misschien is het al gelukt, maar toch wil ik een voorbeeld laten zien waarmee de spaties uit de woorden gehaald worden en de woorden netjes worden weergegeven met Show.

Ook laat ik met een If ... Then structuur zien om eerst te bepalen of er wel een spatie in zit, zodat de methode TrimStart goed werkt. (Voor de zekerheid dan, het zou best mogelijk zijn dat het ook zonder de If ... Then werkt, maar voor een vluggertje heb ik dat niet getest)

Dim str As String = "Blaat1, Blaat2, Blaat3"
Dim arr() As String = str.Split(", ")
For Each arrEl As String In arr
If arrEl(0) = Chr(32) Then arrEl = arrEl.TrimStart(Chr(32))
MessageBox.Show("|" & arrEl & "|")
Next

Dankzij TrimStart zullen er meerdere spaties worden opgeruimd als er meer daarvan aan de linkerkant gevonden worden. Onthoud dat het eerste teken in een string altijd plaats 0 is en geen plaats 1.
 
Ok, thnx, deze vraag is opgelost :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan