续缘8003 发表于 2014-10-6 22:04:50

已解决 固定文本文件的读取

本帖最后由 续缘8003 于 2014-10-7 09:05 编辑

学习中遇到如下问题,文本文件格式如下:(固定格式)
123.45456.23567.32
456.34789.32778.25
778.23789.12778.25
现在问题是需要分割成如下格式,然后再读取其中的数据
123.45   456.23    567.32
456.34   789.32    778.25
778.23   789.12    778.25
请大仙帮忙,已搜索过有关内容,但没搞明白(附件为txt文件)

shenrenba 发表于 2014-10-7 08:35:19

\1后面有个空格

续缘8003 发表于 2014-10-7 08:44:58

已解决

本帖最后由 续缘8003 于 2014-10-7 08:57 编辑

谢谢楼上,正好是我所要的,
但是如何写代码的,不知您用什么程序实现的。
是正则表达式测试版吗


经过搜索已经实现,再次谢谢楼上

veket_linux 发表于 2014-10-7 08:58:06

#include <Array.au3>
$fhandle = FileOpen(@ScriptDir & "\test.txt")
$buf = FileRead($fhandle)
FileClose($fhandle)
;MsgBox(0, "buf read from file", $buf)
$buf = StringReplace($buf, @CRLF, "|")
;MsgBox(0, "buf replace crlf to |", $buf)
$array = StringSplit($buf, "|")
;_ArrayDisplay($array)
Local $final_data
For $i = 1 To $array
        $len = StringLen($array[$i])
        $j = 1
        While $j < $len
                If "." = StringMid($array[$i], $j, 1) Then
                        $j += 3
                        $len = StringLen($array[$i])
                        If $j > $len Then ExitLoop
                        $tmp1 = StringLeft($array[$i], $j-1)
                        $tmp2 = StringMid($array[$i], $j)
                        $array[$i] = $tmp1 & "#" & $tmp2
                Else
                        $j += 1
                EndIf
        WEnd
        $array_line = StringSplit($array[$i], "#")
        For $j = 1 To $array_line
                $final_data[$i-1][$j-1] = $array_line[$j]
        Next
Next
_ArrayDisplay($final_data)

续缘8003 发表于 2014-10-7 09:01:16

本帖最后由 续缘8003 于 2014-10-7 09:03 编辑

谢谢楼上veket_linux提供完整的代码,我再仔细看看
论坛热心人多,论坛才会更兴旺
页: [1]
查看完整版本: 已解决 固定文本文件的读取