如何循环遍历字符串名称并更改 VB 中的非法字符

How to cycle through a string name and change illegal characters in VB

我正在尝试接收某人输入的批处理名称,然后 运行 通过循环将其替换为“_”和非法字符(!£$%...等)。 这是我拥有的:

'define illegal chars
    illegalChars = "!,£,$,%,^,&,*"
'split illegal chars into an array
    illegalCharsArr = Split(illegalChars, ",")
    
'take entered data from textbox
    batch_name = batchEntryBox.Text
    
'split entered data into an array
    batchNameArr = Split(batch_name, " ")
    For Each item In batchNameArr
        For Each i In illegalCharsArr
            If batchNameArr(item) = illegalCharsArr(i) Then
                batchNameEdit = batchNameArr.Replace(batchNameArr(item), illegalCharsArr(i))
            End If
        Next
    Next
    
'post new batch name in Label box
    Label1.Caption = batchNameEdit
End Sub

我无法让它工作。另外,如何拆分没有空格的名称?

谢谢!

试试这个逻辑。

Sub CleanTheWord()

    illegalChars = "!,£,$,%,^,&,*"
    Dim illegalCharsArr() As String
    illegalCharsArr = Split(illegalChars, ",")
    Dim batch_name As String
    batch_name = "£sadg$u^su&bc!ksj*"  'Changed this for testing. Modify accordingly
    
    Dim newstring As String
    newstring = batch_name
    Dim pos As String
    For j = 1 to Len(batch_name)
         pos = Mid(batch_name, j, 1)
         For Each i In illegalCharsArr
            If StrComp(pos, i, vbTextCompare) = 0 Then
                newstring = VBA.Replace(newstring, pos, "_", 1, 1, vbTextCompare)
            End If
        Next
    Next

    MsgBox newstring, vbInformation
    
End Sub

久经考验: