【问题标题】:Character array in Visual Basic 6.0Visual Basic 6.0 中的字符数组
【发布时间】:2017-07-20 04:47:48
【问题描述】:

考虑:

char [] chararray = txt1.Text;

我们如何在 Visual Basic 6.0 中做同样的事情?

【问题讨论】:

  • 由于在 VB 6 中不可能做到完全相同(因为它没有字符类型),所以更多信息会有所帮助。你打算用它做什么?
  • 实际上我只是 vb6 的初学者......我想做的事-“我要去”是一个字符串,我想使用 char 数组用 * 替换所有间隙。谢谢
  • 我的基本问题是我们将如何使用字符串/字符数组一一遍历所有字符

标签: vb6


【解决方案1】:

这取决于你最终想要做什么。

例如,您可以在 VB6 中执行此操作:

Dim b() As Byte
b = Text1.Text

这样b 数组将被调整大小以保存来自"string" 的Unicode 数据——但随后每个字符将被分成两个字节,这可能不是您想要的。此技巧仅适用于Byte


你也可以这样做:

Dim b() As Byte
b = StrConv(Text1.Text, vbFromUnicode)

现在每个字母将占用一个字节,但扩展字符将消失。仅当当前系统代码页包含所需字符时才执行此操作。


您可以手动将字符复制到数组中:

Dim s() As String, i As Long
ReDim s(1 To Len(Text1.Text))

For i = 1 To UBound(s)
  s(i) = Mid$(Text1.Text, i, 1)
Next

或者你甚至可以完全避免创建一个数组,因为Mid 也可以作为一个索引操作符来改变一个字符,而不需要复制或分配任何东西:

Dim s As String
s = Text1.Text

Mid$(s, 3, 1) = "!"

【讨论】:

  • 这一切都对我很有帮助,实际上我只是 vb6 的初学者......我想做的事-“我要去”是一个字符串,我想用* 使用字符数组。谢谢
  • @ashsih VB6 中的字符串操作通常直接使用字符串完成,而不是使用字符数组。你看过替换功能吗?请参阅msdn.microsoft.com/en-us/library/aa241892(v=VS.60).aspx 它用另一个字符串替换所有出现的子字符串。你所说的“差距”到底是什么意思?空间?试试str = Replace(str, " ", "*")
  • 我已经尝试过了,但我的基本问题是我们将如何使用字符串/字符数组一一遍历所有字符
  • @ashish 通过使用 For 循环,例如在第三个示例中使用的循环。
【解决方案2】:

你不能在 VB6 中做同样的事情,因为它没有字符数据类型。

您可以将字符串拆分为一个字符串数组,每个字符串包含一个字符:

Dim chararray(Len(txt1.Text) - 1) As String
For i = 1 to Len(txt1.Text)
  chararray(i - 1) = Mid(txt1.Text, i, 1)
Next

编辑:

要遍历一个字符串并替换字符,你可以简单地遍历它的长度并使用字符串函数来操作它:

' Copy the value of the proeprty to a local variable
Dim text as String = txt1.Text
' Loop over the length of the string
For i = 1 to Len(text)
  ' Check the value of a character
  If Mid(text, i, 1) = " " Then
    ' Replace a character
    Mid(textx, i, 1) = "*"
  End If
Next

【讨论】:

  • @Konrad Rudolph:其他方法都没有做同样的事情,所以代码当然不是多余的。请不要无缘无故地贬低其他答案。
  • 我看不出来——你的代码和b = StrConv(Text1.Text, vbFromUnicode)有什么不同(当然除了数组中的额外字节值)?
  • @Konrad Rudolph:它产生一个字符串数组,我在答案中明确指出,而不是字节数组。
  • 哇,仔细阅读真的很有帮助。我完全忽略了这一点。
【解决方案3】:

VB6 有一个String 类型,所以这段代码就变成了:

Dim x As String
x = Text1.Text

您可以使用 VB6 字符串函数就地操作该文本并操作单个字符。

在极少数情况下,您确实需要字符代码数组,您需要声明一个Byte 数组(VB 没有char 类型),然后您可以简单地将字符串分配给数组,或者使用StrConv 以不同方式处理 Unicode 代码点,如 @GSerg 所示。

【讨论】:

    【解决方案4】:

    String To Array:

    Public Function str2Array(xString As String) As String()
    Dim tmpArray() As String
    Dim tmpchar As String
    
    ' /* For Each Character In The String */
    For I = 1 To Len(xString)
    
        ' /* Retrieve The Character */
        tmpchar = Mid(xString, I, 1)
        ' /* Push It Into The Temporary Array */
        spush tmpArray, tmpchar
    Next I
    
    ' /* Return The Array To The Calling Procedure */
    str2Array = tmpArray
    End Function
    

    【讨论】:

      【解决方案5】:

      这样可以得到字符串每个字符的UNICODE值:

      Dim chararray(1 To Len(txt1.Text)) As Long

      For i = 1 To Len(txt1.Text) chararray(i) = ASCW(Mid(Text1.Text, i, 1)) 下一个

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-06
        • 2010-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多