Roachin 发表于 2014-1-7 13:54:15

「已解决」请问读取txt某行某字段

本帖最后由 Roachin 于 2014-1-8 13:42 编辑

第一行:标题1标题2;标题3;标题4;标题5;标题6;标题7;标题8;标题9;标题10
第二行:内容1内容2;内容3;内容4;内容5;;;;;内容10

txt如上

我要提取第一行的标题1和标题10
第二行以后
要提取所有行数的内容1和内容10

然后再写入一个新的txt,每个标题或内容都是用;隔开,没有;表示此行结束

我提取第一行标题都没问题,但提取第二行以后因为内容10是数字,很难判断位数

请帮忙指教

afan 发表于 2014-1-7 14:22:44

没看懂
用正则试试StringRegExp($str, '(?m)^([^;]+).+?;([^;]+?)\r?$', 3)

wilask 发表于 2014-1-7 14:47:53

一行有这么多的标题?

h20040606 发表于 2014-1-7 14:50:42

以指定分隔符把字符串拆分成若干子字符串.


StringSplit ( "字符串", "分隔符" [, 标志] )

Roachin 发表于 2014-1-7 15:41:18

就是很多标题,所以只要提取某个标题和某个内容,,,,,,感谢路过帮助

skyfree 发表于 2014-1-7 21:49:29

回复 2# afan


    发现很多新人真的连问题都描述不明白

joyran 发表于 2014-1-7 21:53:12

呵呵!学习就是这样一个过程...

Roachin 发表于 2014-1-8 10:31:06

各位前辈 我要取的就是固定的,标题1&标题10,然后所有内容行数的内容1&内容10,然后再写入另一个txt
第一行:标题1标题2;标题3;标题4;标题5;标题6;标题7;标题8;标题9;标题10
第二行:内容1内容2;内容3;内容4;内容5;;;;;内容10
第三行:内容1内容2;内容3;内容4;内容;5内容;6内容7;内容8;;内容10

-------------------------------------------------------------------------------------------------------------
另存入txt以后会变这样
标题1;标题10
内容1;内容10
內容1;內容10

请前辈详解

afan 发表于 2014-1-8 11:02:19

各位前辈 我要取的就是固定的,标题1&标题10,然后所有内容行数的内容1&内容10,然后再写入另一个txt
第 ...
Roachin 发表于 2014-1-8 10:31 http://www.autoitx.com/images/common/back.gif


    为何你的描述里 标题1标题2、内容1内容2 之间始终没有“;”,而其它的都有?
我在2#的回复就有此疑问,所以没有明确,8#又是如此…
如果你只是笔误,或者你测试过我2#的代码,应该早已解决。

Roachin 发表于 2014-1-8 11:38:07

afan 前辈,抱歉,是我笔误,望解决。。。。。感谢
1.txt(原始)
第一行:标题1;标题2;标题3;标题4;标题5;标题6;标题7;标题8;标题9;标题10
第二行:内容1;内容2;内容3;内容4;内容5;;;;;内容10
第三行:内容1;内容2;内容3;内容4;内容;5内容;6内容7;内容8;;内容10

-------------------------------------------------------------------------------------------------------------
另存入2.txt以后会变这样
标题1;标题10
内容1;内容10
內容1;內容10

afan 发表于 2014-1-8 12:37:58

回复 10# Roachin


    2#的就可以。莫非还不会写入新文件…Local $Str = _
                '标题1;标题2;标题3;标题4;标题5;标题6;标题7;标题8;标题9;标题10' & @CRLF & _
                '内容11;内容2;内容3;内容4;内容5;;;;;内容110' & @CRLF & _
                '内容21;内容2;内容3;内容4;内容;5内容;6内容7;内容8;;内容210'
;~Local $Str = FileRead('源.txt')

Local $aSR = StringRegExp($str, '(?m)^([^;]+).+?(;[^;]+?)\r?$', 3)
If @Error Then Exit
Local $sNew = '', $FileNew = '新.txt'
For $i = 0 To UBound($aSR) - 1 Step 2
        $sNew &= $aSR[$i] & $aSR[$i + 1] & @CRLF
Next
FileDelete($FileNew)
FileWrite($FileNew, $sNew)

afan 发表于 2014-1-8 12:41:05

如果内容格式固定,也可以用正则替换Local $Str = _
                '标题1;标题2;标题3;标题4;标题5;标题6;标题7;标题8;标题9;标题10' & @CRLF & _
                '内容11;内容2;内容3;内容4;内容5;;;;;内容110' & @CRLF & _
                '内容21;内容2;内容3;内容4;内容;5内容;6内容7;内容8;;内容210'
;~Local $Str = FileRead('源.txt')
Local $sNew = StringRegExpReplace($str, '(?m)^([^;]+).+?;([^;]+?\r?$)', '\1;\2')
Local $FileNew = '新.txt'
FileDelete($FileNew)
FileWrite($FileNew, $sNew)

Roachin 发表于 2014-1-8 13:40:20

感谢前辈,之前我用2#写入空白,现在看了afan前辈的代码才发现语法错,感谢afan前辈,已解决。。。。。。

ak47gglllk 发表于 2014-9-12 13:47:30

正则,永远的痛呀,学习之,感谢,感谢
页: [1]
查看完整版本: 「已解决」请问读取txt某行某字段