簡體   English   中英

如何替換列表框vbnet中的單詞或字符?

[英]How to replace word or character in listbox vbnet?

大家好,我需要用按鈕刪除和替換列表框中的單詞或字符。

示例:字符 1 字符 字符 1 字符 字符 1 字符

Output字符字符字符

一旦將字符串設置為等於 ListBox 項,您可以通過多種方式更改字符串:

Imports System.Text

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        'Use StringBuilder, more efficient for long strings >200
        Dim badString As String = "Char1cter"
        Dim aStringBuilder As New StringBuilder(badString)
        aStringBuilder.Remove(4, 1)
        aStringBuilder.Insert(4, "a")
        badString = aStringBuilder.ToString()
        MsgBox(badString)

        'Use Remove/Insert at specific locations
        badString = "Char1cter"
        badString = badString.Remove(4, 1).Insert(4, "a")
        MsgBox(badString)

        'Use .Replace, but first test if there is a 1 anywhere in the string
        badString = "Char1cter"
        If InStr(badString, "1") Then
            badString = badString.Replace("1", "a")
            MsgBox(badString)
        End If

        'Use .Replace w/o testing for a 1
        badString = "Char1cter"
        badString = badString.Replace("1", "a")
        MsgBox(badString)
    End Sub
End Class

如果您需要遍歷字符串中的每個字符,可以使用例如:

Dim newString as String = ""
For Each ch As Char In badString
  If ch <> "1" Then 
     newString &= ch
  Endif
  If ch = "1" Then 
     newString &= "a"
  Endif
Next

循環遍歷列表框中的所有項目,插入已更改的項目並刪除損壞的項目:

        For i as Integer = 0 To listBox1.Items.Count - 1
            listBox1.Items.Insert(i, listBox1.Items(i).ToString().Replace("char1cter", "character"));
            listBox1.Items.RemoveAt(i+1);
        Next i

我會 go 用於在加載數據時已經糾正它的方法,也許是這種風格的東西:

您的錯誤數據出現在某個地方:

Imports System.Collections.Generic

Public Class OriginalDataProvider

    Public Shared Iterator Function GetData() As IEnumerable(Of OriginalRecord)
        Yield New OriginalRecord(1, "Char1cter")
        Yield New OriginalRecord(2, "Seco1d")
        Yield New OriginalRecord(27, "Thir1")
    End Function

End Class

以及定義記錄的 class :

Imports System

Public Class OriginalRecord

    Public Sub New(id As Int32, label As String)
        Me.ID = id
        Me.LabelWithErrors = label
    End Sub

    Public ReadOnly Property ID As Int32

    Public ReadOnly Property LabelWithErrors As String

End Class

然后你需要一個更正記錄的包裝器:

Imports System

Public Class CorrectedRecord

    Public Sub New(originalRecord As OriginalRecord)
        If (originalRecord Is Nothing) Then Throw New ArgumentNullException(NameOf(originalRecord))
        Original = originalRecord
    End Sub

    Public ReadOnly Property ID As Int32
        Get
            Return Original.ID
        End Get
    End Property

    Public ReadOnly Property Label As String
        Get
            'Your sophisticated solution comes here (I just replace "1" through "a" which does not work for all my strings but as I don't have 
            'a clue what your logic is take it as an example)
            Return Original.LabelWithErrors.Replace("1"c, "a"c)
        End Get
    End Property

    Private ReadOnly Property Original As OriginalRecord

End Class

在 Form on load 事件中,您只需綁定到更正的記錄:

Private Sub Form1_Load(sender As Object, args As EventArgs) Handles MyBase.Load
    ComboBox1.DataSource = (From e In OriginalDataProvider.GetData() Select New CorrectedRecord(e)).ToArray()
    ComboBox1.ValueMember = "ID"
    ComboBox1.DisplayMember = "Label"
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM