找回密码
 加入
搜索
查看: 5902|回复: 17

[AU3基础] au3 怎样删除文本内每行后三个字符,直到文本结束???请教一下!!!

 火.. [复制链接]
发表于 2011-2-27 19:52:25 | 显示全部楼层 |阅读模式
怎样删除文本内每行后三个字符,直到文本结束???请教一下!!!
发表于 2011-2-27 20:02:18 | 显示全部楼层
本帖最后由 水木子 于 2011-2-27 20:30 编辑

$sText = '测试文本1一二三' & @CRLF & _
                '测试文本2一二三四' & @CRLF & _
                '测试文本3一二三四五' & @CRLF & _
                '测试文本4一二三四五六' & @CRLF & _
                '测试文本5一二三四五六七'

$sRer = StringRegExpReplace($sText, '.{3}(?=[\r])|.{3}$', '')
MsgBox(0, '', $sRer)
 楼主| 发表于 2011-2-27 20:15:46 | 显示全部楼层
是删除已存在文本里的内容test.txt并保存。先谢了!!
发表于 2011-2-27 20:20:19 | 显示全部楼层
本帖最后由 水木子 于 2011-2-27 20:30 编辑

回复 3# xdafeng
道理是一样的!
$sText = FileRead('Text.txt') ;文本

$sRer = StringRegExpReplace($sText, '.{3}(?=[\r])|.{3}$', '')
FileWrite('NewText.txt', $sRer) ;新文本
 楼主| 发表于 2011-2-27 20:52:54 | 显示全部楼层
谢谢了!!!
发表于 2011-2-28 06:56:14 | 显示全部楼层
回复 4# 水木子

大哥,我试了你代码,最后是没有覆盖式的写入,偶试着自己写了个,可不知道错在哪里,帮看下好吗?
#Include <File.au3>
$file = "C:\script\test.txt"
$file1 = FileOpen("C:\script\test.txt", 0)
$1 = "1"
$2 = _FileCountLines($file)
For $number = 1 To $2
    $line = FileReadLine($file1,$number)
    If @error = -1 Then ExitLoop
        _FileWriteToLine($file, $number, StringTrimRight($line, 3), 1)
$1+=1
Next
FileClose($file1)
发表于 2011-2-28 07:36:27 | 显示全部楼层
先删除原文件,再写,就你要求的“覆盖式的写入”嘛

$sText = FileRead('Text.txt') ;文本
$sRer = StringRegExpReplace($sText, '.{3}(?=[\r])|.{3}$', '')
FileDelete('Text.txt')
FileWrite('Text.txt', $sRer) ;新文本
发表于 2011-2-28 07:40:00 | 显示全部楼层
不过,我记得好象au3里,定义一个变量串$str, 这个变量有最大字节数限制的。不是2^32就是2^16
发表于 2011-2-28 07:58:33 | 显示全部楼层
回复 8# happytc

伙计,测试一下,百K的东东没有问题,帮我 看看我的代码有什么问题?
发表于 2011-2-28 08:24:02 | 显示全部楼层
回复 9# 502762378

没啥问题呀,只是有画蛇添足的多余的东西而已

#Include <File.au3>
$file = "C:\script\test.txt"
If FileExists($file) Then
        For $number = 1 To _FileCountLines($file)
                $line = FileReadLine($file, $number)
                _FileWriteToLine($file, $number, StringTrimRight($line, 3), 1)
        Next
EndIf
发表于 2011-2-28 09:03:07 | 显示全部楼层
覆盖式写入?有这么麻烦吗?

去看看这个函数吧!FileOpen
发表于 2011-2-28 22:14:22 | 显示全部楼层
本帖最后由 netegg 于 2011-2-28 22:44 编辑

_filereadtoarray($file, $aA)
_arraydelete($aA, 0)
_arraytrim($aA, 3, 1)
_filewritefromarray($file, $aA)
发表于 2011-2-28 23:14:26 | 显示全部楼层
回复 9# 502762378
难道不会变通一下?
$sText = FileRead('Text.txt') ;文本
$sRer = StringRegExpReplace($sText, '.{3}(?=[\r])|.{3}$', '')
$hFile=FileOpen('Text.txt',2)
FileWrite($hFile, $sRer) ;新文本
Fileclose($hFile)
发表于 2011-3-1 02:39:55 | 显示全部楼层
本帖最后由 502762378 于 2011-3-1 03:05 编辑

回复 13# 3mile


发表于 2011-3-1 09:15:38 | 显示全部楼层
10楼的是一种好方法嘛
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-20 10:12 , Processed in 0.081482 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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