0

目前正在使用这个嵌入了 ASCII 控制章程的字符串。

[)><RS>06<GS>17V0B100<GS>1PRID-001-A1<GS>S99999<RS><EOT>

下面正确过滤掉记录分隔符

i = InputBox("Test") 'i = [)><RS>06<GS>17V0B100<GS>1PRID-001-A1<GS>S99999<RS><EOT>
i = Split(i, Chr(30)) 
'i(1) = 0617V0B1001PRID-001-A1S99999

但组分隔符没有。为什么下面不分裂?

i = InputBox("Test") 'i = [)><RS>06<GS>17V0B100<GS>1PRID-001-A1<GS>S99999<RS><EOT>
i = Split(i, Chr(29)) 
'i(0) = [)>0617V0B1001PRID-001-A1S99999
4

2 回答 2

0

感谢蒂姆引导我找到正确的答案。下面用于将关键事件转换为文本。

Private Sub Text0_KeyPress(KeyAscii As Integer)
Dim i As Integer
i = Me.Text0.SelStart
Select Case KeyAscii
    Case 4
        Me.Text0.Text = Me.Text0.Text + "<EOT>"
        Me.Text0.SelStart = i + 5
    Case 29
        Me.Text0.Text = Me.Text0.Text + "<GS>"
        Me.Text0.SelStart = i + 4
    Case 30
        Me.Text0.Text = Me.Text0.Text + "<RS>"
        Me.Text0.SelStart = i + 4
End Select
End Sub
于 2020-02-13T07:46:44.340 回答
0

忽略输入框,这工作正常:

Dim s As String, arr

s = "[)><RS>06<GS>17V0B100<GS>1PRID-001-A1<GS>S99999<RS><EOT>"

s = Replace(s, "<RS>", Chr(30))
s = Replace(s, "<GS>", Chr(29))

Debug.Print s                         '[)>0617V0B1001PRID-001-A1S99999<EOT>

Debug.Print Split(s, Chr(30))(1)      '0617V0B1001PRID-001-A1S99999

Debug.Print Split(s, Chr(29))(0)      '[)>06
Debug.Print Split(s, Chr(29))(1)      '17V0B100
于 2020-02-13T06:51:28.313 回答