私は、selectステートメントのin節として使用されるリストを構築しようとしています。ユーザーにコンマ区切りの説明のリストを入力させることが必要です。各説明には空白を含めることができるので、カンマで区切る前にスペースを削除して各説明の周りに一重引用符を追加することはできません。空白で始まる記述がないので、一重引用符の後にすべての空白を削除したい。 VB.NETでこれを行う最善の方法は何ですか?正規表現か文字列関数ですか?ここで私がこれまで持っているものです。:編集文字列内の特定の文字の後に空白を削除するにはどうすればよいですか?
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
:このコードを確認した後、私は、私はちょうどBuildList手順のFor Eachループ内で description.Trimを配置することができるかもしれないと思います。
列str = strの&アイテムのループのスケールでは非常に悪く、として使用追加される各項目はメモリ使用量を倍増させます。 10個以上のアイテムごとに、メモリ使用量は約1000倍になります。 StringBuilderは文字列をループにするのに適していますが、私の提案ではループは一切必要ありません。 – Guffa