找回密码
 加入
搜索
查看: 6352|回复: 13

[效率算法] 「已解决」请问读取txt某行某字段

 火.. [复制链接]
发表于 2014-1-7 13:54:15 | 显示全部楼层 |阅读模式
本帖最后由 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是数字,很难判断位数

请帮忙指教
发表于 2014-1-7 14:22:44 | 显示全部楼层
没看懂
用正则试试
StringRegExp($str, '(?m)^([^;]+).+?;([^;]+?)\r?$', 3)
发表于 2014-1-7 14:47:53 | 显示全部楼层
一行有这么多的标题?
发表于 2014-1-7 14:50:42 | 显示全部楼层
以指定分隔符把字符串拆分成若干子字符串.


StringSplit ( "字符串", "分隔符" [, 标志] )
 楼主| 发表于 2014-1-7 15:41:18 | 显示全部楼层
就是很多标题,所以只要提取某个标题和某个内容,,,,,,感谢路过帮助
发表于 2014-1-7 21:49:29 | 显示全部楼层
回复 2# afan


    发现很多新人真的连问题都描述不明白
发表于 2014-1-7 21:53:12 | 显示全部楼层
呵呵!学习就是这样一个过程...
 楼主| 发表于 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

请前辈详解
发表于 2014-1-8 11:02:19 | 显示全部楼层
各位前辈 我要取的就是固定的,标题1&标题10,然后所有内容行数的内容1&内容10,然后再写入另一个txt
第 ...
Roachin 发表于 2014-1-8 10:31



    为何你的描述里 标题1标题2、内容1内容2 之间始终没有“;”,而其它的都有?
我在2#的回复就有此疑问,所以没有明确,8#又是如此…
如果你只是笔误,或者你测试过我2#的代码,应该早已解决。
 楼主| 发表于 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
发表于 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)
发表于 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)
 楼主| 发表于 2014-1-8 13:40:20 | 显示全部楼层
感谢前辈,之前我用2#写入空白,现在看了afan前辈的代码才发现语法错,感谢afan前辈,已解决。。。。。。
发表于 2014-9-12 13:47:30 | 显示全部楼层
正则,永远的痛呀,学习之,感谢,感谢
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-13 07:25 , Processed in 0.071661 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表