J'essaie de construire une liste qui sera utilisée comme la clause in d'une instruction select. L'exigence est que l'utilisateur entre une liste de descriptions séparées par des virgules. Chaque description peut contenir des espaces, donc je ne peux pas supprimer les espaces avant de diviser par une virgule pour ajouter les guillemets simples autour de chaque description. Je veux supprimer tout l'espace blanc après une seule citation puisque aucune description ne commencera avec un espace. Quelle est la meilleure façon de le faire dans VB.NET? Expression régulière ou une fonction de chaîne? Voici ce que j'ai jusqu'à présent .:Quelle est la meilleure façon de supprimer les espaces après un certain caractère dans une chaîne?
Partial Class Test
Inherits System.Web.UI.Page
Protected Sub cmdGetParts_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdGetParts.Click
Dim sDescriptionList As String = ""
BuildList(sDescriptionList)
RemoveSpacesFromList(sDescriptionList)
FillGrid(sDescriptionList)
End Sub
'Build descriptions List based on txtDescriptionList.Text
Private Sub BuildList(ByRef sDescriptionList As String)
Dim sDescriptionArray As String()
sDescriptionArray = txtDescriptionList.Text.Trim.Split(","c)
Dim iStringCount As Integer = 0
For Each description In sDescriptionArray
If iStringCount > 0 Then
sDescriptionList = sDescriptionList & ","
End If
sDescriptionList = sDescriptionList & "'" & description & "'"
iStringCount = iStringCount + 1
Next
End Sub
**'This procedure removes unwanted spaces from description list
Private Sub RemoveSpacesFromList(ByRef sList As String)
sList = sList.Replace("' ", "'")
End Sub**
'This procedure fills the grid with data for descriptions passed in
Private Sub FillGrid(ByVal sDescriptionList As String)
Dim bo As New boPart
Dim dtParts As Data.DataTable
dtParts = bo.GetPartByDescriptionList(sDescriptionList)
GridView1.DataSource = dtParts
GridView1.DataBind()
End Sub
End Class
Modifié: Après avoir examiné ce code, je pense que je peux être en mesure de placer juste description.Trim l'intérieur de la boucle For Each de la procédure construitListe.
En utilisant str = str & élément dans une balance de boucle très mal, comme chaque élément ajouté double l'utilisation de la mémoire. Pour chaque 10 éléments de plus, l'utilisation de la mémoire est environ 1000 fois plus grande. Un StringBuilder est préféré pour construire une chaîne dans une boucle, mais avec ma suggestion ci-dessous vous n'avez pas besoin d'une boucle du tout. – Guffa