VB 6.0 提取数字字符串!!~~求解答呀!!~

具体就是给定一串未知的数字字符串 0.09238 343.873 23.853
0.02312 123.346 12.756 这样的一个testdata.txt文件,怎么才能利用instr函数提取用line input输入的字串中每行的三个数,可以这三个数赋值给一个二维数组,一是行数,二是列数,列数也就是3,每行有三个数嘛,请问这样的代码在vb6.0中怎么实现???谢谢各位大神!!!

第1个回答  2013-07-27

写一个自定义函数,供调用:

 

Dim arr (1000,3)

Dim i as integer

Private Sub splitString(s as String)

Dim a As Variant

a = Split(s, " ")

 

 arr(i, 0) = a(0)

 arr(i, 1) = a(1)

 arr(i, 2) = a(2)

'MsgBox arr(0, 0)

i = i + 1

End Sub

 

经测试,可用。

第2个回答  2013-07-27
涉及的知识:
1,读取文本文件
Dim FileName As String '存放文本文件的标识符(即:盘符、路径、文件名)
Dim MyLineStr As String '用来存放读取1行文本的内容
Dim MyFileText as string '存放整个文本文件的内容

FileName = "C:\Test.txt"

MyFileText = ""

'以读的方式打开文件
Open FileName For Input As #1
Do While Not EOF(1) ' 循环至文件尾
Line Input #1, MyLineStr '读入一行
MyFileText = MyFileText & MyLineStr & vbCrLf
Loop
Close #1 ' 关闭文件。

说明:本例结束,文本文件的内容保存在变量MyFileText里。

2,分解到二维数组:
本例,当然可以在全部读到变量MyFileText里后,进行分离,但是显然,读取一行,就分离一行,效率更高吧?
讲一讲思路:
VB6有一个Split()函数,可以完成这种分离,并将分离出的数据保存到数组里:
例如:
Dim str1 As String
Dim d() As String
Dim i As Integer
str1 = "A B C D E F G"
d = Split(str1, " ")
For i = LBound(d) To UBound(d)
Print d(i)
Next i
你会看到,这段代码,把一个字符串"A B C D E F G",分离成了数组D。
关键是Split(str1, " ")函数,这里的双引号里是一个空格,意思是,把空格作为分隔符号进行分离识别。
我看了你一下,你发的数据之间似乎是2个空格,所以需要用另一个VB函数Replace()处理,这个函数叫替换函数。
在每读取一行,数据后,马上用一个空格代替替换原来的两个连续的空格,一直到文本中不存在连续两个空格为止。

3,考虑到二维数组,不能重新定义第一维度,所以先读一遍文件,获得行数,然后定义数组大小。

最后完整的代码如下:
Option Explicit

Private Sub Command1_Click()
Dim FileName As String '存放文本文件的标识符(即:盘符、路径、文件名)
Dim MyLineStr As String '用来存放读取1行文本的内容
Dim n As Integer '保存文本行数,便于定义数组的规模
Dim d() As String
Dim MyDate() As String

FileName = "C:\Test.txt"

n = 0
'以读的方式打开文件
Open FileName For Input As #1
Do While Not EOF(1) ' 循环至文件尾
n = n + 1
Line Input #1, MyLineStr '读入一行
Loop
Close #1 ' 关闭文件。

ReDim MyDate(n, 3) As String
n = 0
'以读的方式打开文件
Open FileName For Input As #1
Do While Not EOF(1) ' 循环至文件尾
n = n + 1
Line Input #1, MyLineStr '读入一行
Do While InStr(MyLineStr, " ") <> 0
MyLineStr = Replace(MyLineStr, " ", " ")
Loop
d = Split(MyLineStr)
MyDate(n, 1) = d(0)
MyDate(n, 2) = d(1)
MyDate(n, 3) = d(2)
Loop
Close #1 ' 关闭文件。

‘下面是输出显示二维数组
Dim i As Integer
Dim j As Integer
For i = 1 To n
For j = 1 To 3
Debug.Print MyDate(i, j),
Next j
Debug.Print
Next i

End Sub
相似回答
大家正在搜