「已解决」请问读取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是数字,很难判断位数
请帮忙指教 没看懂
用正则试试StringRegExp($str, '(?m)^([^;]+).+?;([^;]+?)\r?$', 3) 一行有这么多的标题? 以指定分隔符把字符串拆分成若干子字符串.
StringSplit ( "字符串", "分隔符" [, 标志] ) 就是很多标题,所以只要提取某个标题和某个内容,,,,,,感谢路过帮助 回复 2# afan
发现很多新人真的连问题都描述不明白 呵呵!学习就是这样一个过程... 各位前辈 我要取的就是固定的,标题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
请前辈详解 各位前辈 我要取的就是固定的,标题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#的代码,应该早已解决。 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 回复 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) 如果内容格式固定,也可以用正则替换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) 感谢前辈,之前我用2#写入空白,现在看了afan前辈的代码才发现语法错,感谢afan前辈,已解决。。。。。。 正则,永远的痛呀,学习之,感谢,感谢
页:
[1]