怎样在一个文件中替换指定位置的字符,大家帮忙!!!!!!!!!!!!!!!!!!十分着急!!!!!!!!!!

wangjing1997 2004-01-12 11:07:24
在一个文件中,打开后FILEOPEN,怎样在指定位置替换掉指定的字符。例如:一个TXT文件的字符是:“三百台计算机”,我要在前两个字符处“三百”替换成“四千”。最后变成“四千台计算机”。(在PB里)请问如何实现????????
...全文
49 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinyinyin 2004-01-13
  • 打赏
  • 举报
回复
首先定义一个函数:
//==========================================================================================
// bf_string_replace(as_mainstr, as_oldstr, as_newstr) returns string
//------------------------------------------------------------------------------------------
// Description: 在一个指定的字符串中把新字符(as_newstring)替换里面的旧字符(as_oldstring)
//------------------------------------------------------------------------------------------
// Author : Danny 2002-12-3
//==========================================================================================

String ls_mainstr
String ls_oldstr
String ls_newstr
String ls_text
Long ll_len_main
Long ll_len_old
Long ll_len_new
Long ll_pos

ls_mainstr = as_mainstr
ls_oldstr = as_oldstr
ls_newstr = as_newstr

ll_len_old = Len(ls_oldstr)
ll_len_new = Len(ls_newstr)

ll_pos = 1

ls_text = ls_mainstr
ll_len_main = Len(ls_text)

DO WHILE 1 = 1

ll_pos = Pos(ls_text, ls_oldstr, ll_pos)
IF ll_pos = 0 THEN
EXIT
END IF
ls_text = Left(ls_text, ll_pos - 1) + ls_newstr + Right(ls_text, ll_len_main - ll_len_old - ll_pos + 1)
ll_len_main = Len(ls_text)
ll_pos = ll_pos + ll_len_new - ll_len_old + 1
IF ll_pos > ll_len_main - ll_len_old THEN
EXIT
END IF

LOOP

RETURN ls_text

//调用
String ls_mainstr
String ls_newstr
Long ll_file
Long ll_newfile
ll_file = FileOpen("c:\abc.txt", LineMode!, Read!, Shared!)
ll_newfile = FileOpen("c:\abc_new.txt", LineMode!, Write!, LockWrite!, Replace!)
DO WHILE 1 = 1
IF FileRead(ll_file, ls_mainstr) = -100 THEN
EXIT
END IF
ls_newstr = bf_string_replace(ls_mainstr, "四百", "三千")
FileWrite(ll_newfile, ls_newstr)
LOOP
FileClose(ll_file)
FileClose(ll_newfile)
FileCopy("c:\abc_new.txt", "c:\abc.txt", TRUE)
feixianzhi 2004-01-12
  • 打赏
  • 举报
回复
暂时没有,word也要打开才可以修改呀!!
wangjing1997 2004-01-12
  • 打赏
  • 举报
回复
把文件上的字符显示出来再改再保存会很慢,因为数据太多,有的文件会很大。有没有直接操作文件的函数?
feixianzhi 2004-01-12
  • 打赏
  • 举报
回复
用之前最好用pos()函数定位:
repalce(mle_1.text,pos(mle_1.text,"三百"),len("三百"),"四千")
feixianzhi 2004-01-12
  • 打赏
  • 举报
回复
用Replace ( string1, start, n, string2 )函数

先把文件导入一个多行编辑框,用Replace ( string1, start, n, string2 )函数替换后,再保存会去!
wangjing1997 2004-01-12
  • 打赏
  • 举报
回复
不是文本文件,有的符号是不可见的,就是读不到。或者别的方法怎么作???????
dotnba 2004-01-12
  • 打赏
  • 举报
回复
Replace好象有些问题。当文本很长的时候好象不能正确替换。用POS、LEFT、MID等来实现。
对于汉字,如果是8.0以上版本,我想应该考虑使用PowW这样的函数。
hzhxxx 2004-01-12
  • 打赏
  • 举报
回复


使用行模式打开,使用数组把文件对应的读出到数组里面,

修改数组中的文本,最后把数组里面的新内容写成一个新的文件
l
msdn_vipuser 2004-01-12
  • 打赏
  • 举报
回复
关注,没用过
友情顶!!
wangjing1997 2004-01-12
  • 打赏
  • 举报
回复
FILEOPEN不就是已经打开了吗?

1,072

社区成员

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

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