dBase命令用换行符替换字符

时间:2015-10-31 22:19:07

标签: foxpro dbase

我使用名为PastPerfect的博物馆/档案软件程序。该计划有一个全球更新"搜索和替换功能有限的功能以及命令窗口"您可以从该屏幕访问它所说的"将接受dBase语言中的命令"对我的记录进行全局更改。

我有一些记录,我从其他来源导入PastPerfect,这些记录的格式化使得当一个字段有多个条目时,它使用垂直条作为分隔符,(例如,主题词备注字段为本书可能包含"新罕布什尔州 - 历史|华盛顿,芒特(新罕布什尔州) - 历史"),当多个条目应该用回车分开时。 (备忘录字段应为:

新罕布什尔州 - 历史

华盛顿,山(N.H。) - 历史

所以我需要的是进行全局更新以用回车替换所有垂直条。使用Microsoft Words查找和替换功能很容易,但PastPerfect全局更新菜单不允许我替换任何特殊字符。

因此有一个dBase函数可以让我在字段中搜索" |"符号并用换行符/回车符替换它。我一直在谷歌搜索,但找不到任何东西让我开始为我的生活。看起来好像REPLACE函数替换了整个字段(而不仅仅是搜索一串字符)。

或者,如果有人知道用于操作DBF文件的程序,该程序具有足够强大的查找和替换功能以能够替换换行符,我可能能够以dBase格式导出这些记录并重新导入它们。我已经测试了一些程序,但到目前为止我发现的所有程序都只有简单的查找和替换功能。

2 个答案:

答案 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}