zbezj 发表于 2014-11-29 16:50:33

【已解决】读取txt中指定的某行某列的数据

本帖最后由 zbezj 于 2014-11-29 23:35 编辑

123
456
789



例如上面的内容,想把这九个数读取,并赋值到数组中。请教大神,应该怎么编写代码?谢谢!

感谢,afan大神的耐心指导。此外感谢netegg、xyold1提供意见。

zbezj 发表于 2014-11-29 16:51:47

在线等大神指点~~

netegg 发表于 2014-11-29 17:28:20

按行读取,正则分拆

zbezj 发表于 2014-11-29 18:48:28

回复 3# netegg

能提供下代码? 查了好多资料,正则弄不太明白。谢谢大侠!

netegg 发表于 2014-11-29 19:03:11

那个中间的空格是固定一个?不用正则也行

zbezj 发表于 2014-11-29 19:18:37

回复 5# netegg 中间的空格,有好几个。但是个数是一样多的。这些数据是从Excel中复制到txt中的。




4.916094237        18.47223492        17.72360797        20.07765068        2.244682034       
7.073194034        22.04562807        17.19103832        19.8221179        2.23423084       
9.03093563        24.06295487        17.4786963        20.03798008        2.242400756       
10.97421483        28.26196067        17.39201467        19.94261233        2.24527325

zbezj 发表于 2014-11-29 19:24:43

最想使用这种办法,但是代码估计更难写了:

1、建立一个ListView网格
2、将Excel中的 N行8列数据,直接复制到网格中。(但是我写的代码,ListView中的值是预先定义好的,不能像inputbox那样手动输入)
3、每个数据都赋值给一个变量(数组)。

netegg 发表于 2014-11-29 19:33:22

复制成一维的还是二维的

zbezj 发表于 2014-11-29 19:35:09

回复 8# netegg


二维的。这些数据一共有8列,但是行数不确定。

afan 发表于 2014-11-29 21:40:00

本帖最后由 afan 于 2014-11-29 21:41 编辑

这数据格式很简单#include <Array.au3>
Local $c = 5 ;列数
Local $Str = _
                '4.916094237      18.47223492      17.72360797      20.07765068      2.244682034      ' & @CRLF & _
                '7.073194034      22.04562807      17.19103832      19.8221179      2.23423084      ' & @CRLF & _
                '9.03093563      24.06295487      17.4786963      20.03798008      2.242400756      ' & @CRLF & _
                '10.97421483      28.26196067      17.39201467      19.94261233      2.24527325'
Local $aSR = StringRegExp($Str, '\S+', 3)
If @error Or Not IsInt(UBound($aSR) / $c) Then Exit
Local $a[$c]
For $i = 0 To UBound($aSR) - 1
        $a = $aSR[$i]
Next
_ArrayDisplay($a, UBound($a))

zbezj 发表于 2014-11-29 22:03:47

回复 10# afan


谢谢大侠。但是我要实现的不是这个目的。


我是想直接复制TXT中的这些数据,然后粘贴到AU3的窗口中,最后对这些数据进行计算。因为这些数据不是固定不变的,每次进行计算的时候都要重新输入新的数据(有上百行的数据)。所以想到先从TXT中读取这些数据,然后赋值给 数组变量。


多谢大侠指导

zbezj 发表于 2014-11-29 22:37:51

{:face (239):}自己顶顶顶。。。

xyold1 发表于 2014-11-29 22:54:13

;要打开的文件
Local $file = FileOpen("test.txt", 0)

; 检查打开的文件是否可为读
If $file = -1 Then
    MsgBox(4096, "错误", "不能打开文件.")
    Exit
EndIf

; 每次读取一个字符,直到文件结束(译注:读中文必须设置为远大于1的值!)(译注的译注(thesnow):ANSI编码中,一个中文为两个字符(char)/字节)
While 1
    Local $chars = FileRead($file, 1)
    If @error = -1 Then ExitLoop
    MsgBox(4096, "读取的字符:", $chars)
WEnd

FileClose($file)
先读那个文本呀

afan 发表于 2014-11-29 23:06:02

回复 11# zbezj


    你只需要第8-13行…

zbezj 发表于 2014-11-29 23:16:45

回复 10# afan

    8到13行,是用正则把数据提取出来,然后 把这些数据赋值给数组。 但是,这些数据是在TXT中啊。。。还是不太懂。
页: [1] 2
查看完整版本: 【已解决】读取txt中指定的某行某列的数据