回 帖 发 新 帖 刷新版面

主题:如何对一个文本文件进行增加或删除字符?

要一个文本文件中的第7至12行中的每一行开头增加一个字母A,该如何写?
要删除第7至12行中的每一行开头字母,该如何写?
谢谢!

回复列表 (共12个回复)

沙发

按两个文件来操作,一个是原文件,一个是新文件
读源文件,写新文件去
到第7行到12行的时候进行操作

板凳

可是我不会呀,能否给个完整的源代码呀。

3 楼

要一个文本文件中的第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 楼

moz,如果这两个动作同时进行即在5至6行中增加A的同时,删除7至8行的A,又该如何写呢?是个新手,请多多谅解。

5 楼

如果这两个动作同时进行即在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 楼

哈哈!!
  moz的字符编程太好了!!
    PF!PF!PF!

7 楼

对呀,moz功力不错呀,不过有没有不用do until eof(1)  loop的方法呢

8 楼

如果明确文件不太长的话:

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 楼

[quote]如果明确文件不太长的话:

open&nbsp;"旧文件名"&nbsp;for&nbsp;binary&nbsp;as&nbsp;#1
open&nbsp;"新文件名"&nbsp;for&nbsp;output&nbsp;as&nbsp;#2
i&=1
a$=input$(1,16383)
do&nbsp;while&nbsp;k&<=len(a$)
&nbsp;&nbsp;&nbsp;k&=k&+1
&nbsp;&nbsp;&nbsp;if&nbsp;mid$(a$,k&,1)=chr$(10)&nbsp;then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&=i&+1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k&=k&+1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;mid$(a$,k&,1)<>chr$(13)&nbsp;then&nbsp;a$=left$(a$,k&-1)+chr$(13)+mid$(a$,k&)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k&=k&+1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select&nbsp;case&nbsp;i&
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;5,6:a$=left$(a$,k&-1)+"A"+mid$(a$,k&)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;7,8:a$=left$(a$,k&-1)+mid$(a$,k&+1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;else:&nbsp;k&=k&-1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;select
&nbsp;&nbsp;&nbsp;endif
next
print&nbsp;#2,a$;
close&nbsp;#1,#2[/quote]

上面这个编译时在next那个位置显示:NEXT WITHOUT FOR
何解呢?

10 楼

抱歉

我来回复

您尚未登录,请登录后再回复。点此登录或注册