怎样写代码,可以修改txt文本中的某一行

jingyuanlin 2003-12-05 12:17:47
我想把txt文档中的某一行替换成其他内容,应该怎么写呢?
...全文
377 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainstormmaster 2003-12-05
  • 打赏
  • 举报
回复
没有好办法,只能全部读出后进行替换,再把替换后的文本写回文件,至于读写文件,可以用open语句,也可以借助FSO对象实现
hansong_ll 2003-12-05
  • 打赏
  • 举报
回复
一个苯办法,把TXT文件内容一行行读出来,保存到另外一个文件中,找到替换行,替换掉。
northwolves 2003-12-05
  • 打赏
  • 举报
回复
Sub replaceline(txtpath As String, ByVal linenum As Integer, ByVal mystr As String)
Dim filetxt As String, x As Variant, i As Integer
filetxt = String(FileLen(txtpath), " ")
Open txtpath For Binary As 1
Get #1, , filetxt
Close 1
x = Split(filetxt, vbCrLf)

If linenum <= UBound(x) + 1 Then
x(linenum - 1) = mystr
End If
Open txtpath For Binary As 1
Put #1, , Join(x, vbCrLf)
Close 1
Set x = Nothing
MsgBox "ok!"
End Sub

Private Sub Command1_Click()
replaceline "d:\xxxx.txt", 8, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
End Sub
kmzs 2003-12-05
  • 打赏
  • 举报
回复
up
northwolves 2003-12-05
  • 打赏
  • 举报
回复
rainstormmaster(rainstormmaster) 言之有理,多谢指教。
chao778899 2003-12-05
  • 打赏
  • 举报
回复
读出来,写进去,估计没有更好的定位的方法
SoHo_Andy 2003-12-05
  • 打赏
  • 举报
回复
这个比较麻烦,如果你的文件不是很大的话建议你读出原文件,解析到那一行,
然后加入你的文本,最后重写文件,给你个文件操作的参考例子,希望给你启发

网友的要求
设有文件a.txt,其中存放了两行数据,数据用逗号分隔,现在要读取第一行的奇数位置的数据写入到另一个文本文件(b.txt)的第一行,类似地,把第二行的奇数位置的数据写入到第二行。
比如:
文件a.txt如下:
1,2,3,4,5
6,7,8,9,10
操作完成后,文件b.txt应为
1,3,5
6,8,10
因为我没有用过vb,希望各位能给出完整一点的代码,谢谢!

解决的代码
Sub 提取奇数位数据(strSourceFile As String, strTargetFile As String)
Dim filenum As Integer
Dim fileContents As String
Dim fileInfo() As String
Dim i As Integer
Dim j As Integer

Dim tmpDemData As String
filenum = FreeFile
Open strSourceFile For Binary As #filenum
fileContents = Space(LOF(filenum))
Get #filenum, , fileContents
Close filenum
fileInfo = Split(fileContents, vbCrLf)
'取出源文件行数,按照回车换行来分隔成数组

filenum = FreeFile
tmpDemData = ""
If Dir(strTargetFile, vbNormal) <> "" Then
Kill strTargetFile
End If
Dim Filestr() As String

Open strTargetFile For Append As #filenum
'循环每一行
For i = 0 To UBound(fileInfo) - 1
Filestr = Split(Trim(fileInfo(i)), ",") '按照逗号分隔每一行的数据
tmpDemData = ""
For j = 0 To UBound(Filestr)
'判断是否为奇数位
If (j Mod 2) = 0 Then
tmpDemData = tmpDemData & Filestr(j)
ElseIf j <> 0 And j <> UBound(Filestr) Then
tmpDemData = tmpDemData & ","
End If
Next
'保存一行如目标文件
Print #filenum, tmpDemData
Next
Close #filenum
MsgBox "完毕"
End Sub

Private Sub Command1_Click()
提取奇数位数据 "d:\aa.txt", "d:\bb.txt"
End Sub
rainstormmaster 2003-12-05
  • 打赏
  • 举报
回复
顺便说一下,northwolves(野性的呼唤) 的代码存在问题,问题是当文件中包含中文时,他的代码会在文件尾部产生多余的空格,这是由:
filetxt = String(FileLen(txtpath), " ")
所造成的,修正如下:
Sub replaceline(txtpath As String, ByVal linenum As Integer, ByVal mystr As String)
Dim filetxt As String, x As Variant, i As Integer
dim j as long
dim buff() as byte
j=filelen(txtpath)
redim buff(j-1)
Open txtpath For Binary As 1
Get #1, , buff
Close 1
filetxt=strconv(buff,vbunicode)
x = Split(filetxt, vbCrLf)

If linenum <= UBound(x) + 1 Then
x(linenum - 1) = mystr
End If
Open txtpath For Binary As 1
Put #1, , Join(x, vbCrLf)
Close 1
Set x = Nothing
MsgBox "ok!"
End Sub

Private Sub Command1_Click()
replaceline "d:\xxxx.txt", 8, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
End Sub

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧