我使用名为PastPerfect的博物馆/档案软件程序。该计划有一个全球更新"搜索和替换功能有限的功能以及命令窗口"您可以从该屏幕访问它所说的"将接受dBase语言中的命令"对我的记录进行全局更改。
我有一些记录,我从其他来源导入PastPerfect,这些记录的格式化使得当一个字段有多个条目时,它使用垂直条作为分隔符,(例如,主题词备注字段为本书可能包含"新罕布什尔州 - 历史|华盛顿,芒特(新罕布什尔州) - 历史"),当多个条目应该用回车分开时。 (备忘录字段应为:
新罕布什尔州 - 历史
华盛顿,山(N.H。) - 历史
所以我需要的是进行全局更新以用回车替换所有垂直条。使用Microsoft Words查找和替换功能很容易,但PastPerfect全局更新菜单不允许我替换任何特殊字符。
因此有一个dBase函数可以让我在字段中搜索" |"符号并用换行符/回车符替换它。我一直在谷歌搜索,但找不到任何东西让我开始为我的生活。看起来好像REPLACE函数替换了整个字段(而不仅仅是搜索一串字符)。
或者,如果有人知道用于操作DBF文件的程序,该程序具有足够强大的查找和替换功能以能够替换换行符,我可能能够以dBase格式导出这些记录并重新导入它们。我已经测试了一些程序,但到目前为止我发现的所有程序都只有简单的查找和替换功能。
答案 0 :(得分:3)
如果“命令窗口”在VFP中,你应该很容易去。我不知道表的名称,也不知道实际的列,但它应该像......一样简单。
update YourTable;
set YourColumn = strtran( YourColumn, "|", chr(13)+chr(10))
并且具有管道字符的每一行都将转换为cr / lf ...即使它的一个或多个实例也是如此。您可能需要提供更多关于桌子的信息,让我知道,我会调整。
至于使用REPLACE命令,这也适用于STRTRAN()调用。
USE YourTable
REPLACE ALL YourColumn WITH strtran( YourColumn, "|", chr(13)+chr(10))
这也将更新所有行。如果没有管道“|”字符,备忘录字段将保持原样/不变。
答案 1 :(得分:0)
让我们说,我们希望将字母(a)更改为" c"什么是" a"的位置。
请尝试以下代码:
{nn="a"}
{USE your_table}
{GO top}
{DO whil NOT EOF()}
{ aa=LEN(ALLTRIM(field_name))}
{ aa1=ALLTRIM(field_name)}
{ new_value=""}
{ FOR ii=1 TO aa}
{ v=SUBSTR(aa1,ii,1)}
{ IF v=nn}
{ v="c"}
{ ENDIF}
{ new_value=new_value+v}
{ ENDFOR}
{ REPLACE field_name WITH new_value}
{ SKIP}
{ ENDDO}
{ close data}