主题:如何对一个文本文件进行增加或删除字符?
gzlm
[专家分:0] 发布于 2006-04-16 19:11:00
要一个文本文件中的第7至12行中的每一行开头增加一个字母A,该如何写?
要删除第7至12行中的每一行开头字母,该如何写?
谢谢!
回复列表 (共12个回复)
沙发
moz [专家分:37620] 发布于 2006-04-16 20:30:00
按两个文件来操作,一个是原文件,一个是新文件
读源文件,写新文件去
到第7行到12行的时候进行操作
板凳
gzlm [专家分:0] 发布于 2006-04-16 20:43:00
可是我不会呀,能否给个完整的源代码呀。
3 楼
moz [专家分:37620] 发布于 2006-04-16 23:53:00
要一个文本文件中的第7至12行中的每一行开头增加一个字母A,该如何写?
open "旧文件名" for input as #1
open "新文件名" for output as #2
do until eof(1)
i=i+1
line input #1,a$
if i>6 and i<13 then a$="A"+a$
print #2,a$
loop
close #1,#2
要删除第7至12行中的每一行开头字母,该如何写?
open "旧文件名" for input as #1
open "新文件名" for output as #2
do until eof(1)
i=i+1
line input #1,a$
if i>6 and i<13 then a$=mid$(a$,2)
print #2,a$
loop
close #1,#2
4 楼
gzlm [专家分:0] 发布于 2006-04-18 18:39:00
moz,如果这两个动作同时进行即在5至6行中增加A的同时,删除7至8行的A,又该如何写呢?是个新手,请多多谅解。
5 楼
moz [专家分:37620] 发布于 2006-04-19 11:38:00
如果这两个动作同时进行即在5至6行中增加A的同时,删除7至8行的A,
open "旧文件名" for input as #1
open "新文件名" for output as #2
do until eof(1)
i=i+1
line input #1,a$
select case i
case 5,6 : a$="A"+a$
case 7,8 : a$=mid$(a$,2) '[color=0000FF]注意这里是删除第一个字符而不是删除"A"[/color]
end select
print #2,a$
loop
close #1,#2
6 楼
meizi177 [专家分:70] 发布于 2006-04-19 18:51:00
哈哈!!
moz的字符编程太好了!!
PF!PF!PF!
7 楼
bcboy [专家分:0] 发布于 2006-04-20 09:08:00
对呀,moz功力不错呀,不过有没有不用do until eof(1) loop的方法呢
8 楼
moz [专家分:37620] 发布于 2006-04-20 12:30:00
如果明确文件不太长的话:
open "旧文件名" for binary as #1
open "新文件名" for output as #2
i&=1
a$=input$(1,16383)
do while k&<=len(a$)
k&=k&+1
if mid$(a$,k&,1)=chr$(10) then
i&=i&+1
k&=k&+1
if mid$(a$,k&,1)<>chr$(13) then a$=left$(a$,k&-1)+chr$(13)+mid$(a$,k&)
k&=k&+1
select case i&
case 5,6:a$=left$(a$,k&-1)+"A"+mid$(a$,k&)
case 7,8:a$=left$(a$,k&-1)+mid$(a$,k&+1)
case else: k&=k&-1
end select
endif
[color=FF00FF]loop[/color]
print #2,a$;
close #1,#2
9 楼
gzlm [专家分:0] 发布于 2006-04-20 21:49:00
[quote]如果明确文件不太长的话:
open "旧文件名" for binary as #1
open "新文件名" for output as #2
i&=1
a$=input$(1,16383)
do while k&<=len(a$)
k&=k&+1
if mid$(a$,k&,1)=chr$(10) then
i&=i&+1
k&=k&+1
if mid$(a$,k&,1)<>chr$(13) then a$=left$(a$,k&-1)+chr$(13)+mid$(a$,k&)
k&=k&+1
select case i&
case 5,6:a$=left$(a$,k&-1)+"A"+mid$(a$,k&)
case 7,8:a$=left$(a$,k&-1)+mid$(a$,k&+1)
case else: k&=k&-1
end select
endif
next
print #2,a$;
close #1,#2[/quote]
上面这个编译时在next那个位置显示:NEXT WITHOUT FOR
何解呢?
10 楼
moz [专家分:37620] 发布于 2006-04-20 22:20:00
抱歉
我来回复