foxpro替换的问题
答案:2 悬赏:0
解决时间 2021-03-24 22:50
- 提问者网友:泪姬迷茫
- 2021-03-24 00:32
在dbf表中把字段1字段2字段3字段4字段5字段6字段7字段8字段中“-”替换成空,可以批量处理吗?
最佳答案
- 二级知识专家网友:狠傷凤凰
- 2021-03-24 00:49
可以, 使用chrtran()函数
比如:
select 表名
replace all 字段1 with chrtran(字段1,'-',''),字段2 with chrtran(字段2,'-','') ......以此类推
附:帮助中说明
在一个字符表达式中,把与第二个表达式字符相匹配的字符替换为第三个表达式中相应字符。
CHRTRAN(cSearchedExpression, cSearchExpression, cReplacementExpression)
参数
cSearchedExpression
指定字符表达式,CHRTRAN( ) 替换其中的字符。
cSearchExpression
指定字符表达式,CHRTRAN( ) 在 cSearchedExpression 中寻找该表达式的字符。
cReplacementExpression
指定包含替换字符的表达式。若在 cSearchedExpression 中发现一个 cSearchExpression
中的字符,则用 cReplacementExpression 中的一个字符替换。替换字符在
cReplacementExpression 中的位置与被替换字符在 cSearchExpression 中的位置相同。
若
cReplacenentExpression 中的字符比 cSearchExpression 中的字符少,则删除
cSearchExpression 中多余的字符。若 cReplacementExpression 中的字符比
cSearchExpression 中的字符多,则忽略 cReplacementExpression 中的多余字符。
返回值
字符型
说明
CHRTRAN( ) 使用转换表达式 cSearchExpression 和
cReplacementExpression, 转换字符表达式
cSearchedExpression,并返回结果字符串。
示例
复制代码
? CHRTRAN('ABCDEF', 'ACE', 'XYZ') && Displays XBYDZF
? CHRTRAN('ABCD', 'ABC', 'YZ') && Displays YZD
? CHRTRAN('ABCDEF', 'ACE', 'XYZQRST') && Displays XBYDZF
比如:
select 表名
replace all 字段1 with chrtran(字段1,'-',''),字段2 with chrtran(字段2,'-','') ......以此类推
附:帮助中说明
在一个字符表达式中,把与第二个表达式字符相匹配的字符替换为第三个表达式中相应字符。
CHRTRAN(cSearchedExpression, cSearchExpression, cReplacementExpression)
参数
cSearchedExpression
指定字符表达式,CHRTRAN( ) 替换其中的字符。
cSearchExpression
指定字符表达式,CHRTRAN( ) 在 cSearchedExpression 中寻找该表达式的字符。
cReplacementExpression
指定包含替换字符的表达式。若在 cSearchedExpression 中发现一个 cSearchExpression
中的字符,则用 cReplacementExpression 中的一个字符替换。替换字符在
cReplacementExpression 中的位置与被替换字符在 cSearchExpression 中的位置相同。
若
cReplacenentExpression 中的字符比 cSearchExpression 中的字符少,则删除
cSearchExpression 中多余的字符。若 cReplacementExpression 中的字符比
cSearchExpression 中的字符多,则忽略 cReplacementExpression 中的多余字符。
返回值
字符型
说明
CHRTRAN( ) 使用转换表达式 cSearchExpression 和
cReplacementExpression, 转换字符表达式
cSearchedExpression,并返回结果字符串。
示例
复制代码
? CHRTRAN('ABCDEF', 'ACE', 'XYZ') && Displays XBYDZF
? CHRTRAN('ABCD', 'ABC', 'YZ') && Displays YZD
? CHRTRAN('ABCDEF', 'ACE', 'XYZQRST') && Displays XBYDZF
全部回答
- 1楼网友:万千宠爱
- 2021-03-24 01:56
执行宏替换。
& varname[.cexpression]
参数
& varname
指定宏替换中引用的内存变量名或数组元素名。请不要加上用于区分内存变量与字段的前缀 m.,否则将产生语法错误。宏的长度不要超过 visual foxpro 中允许的最大语句长度。
在宏替换中,变量不能递归引用其自身。例如,下列语句将产生错误信息:
store '&gcx' to gcx
? &gcx
出现在 do while、for 和 scan 中的宏替换语句只在循环开始时计算值,在后续的循环中则不再计算值。因此在循环内改变内存变量和数组元素的值对宏替换都无效。
.cexpression
句点分隔符 (.) 和 cexpression 选项可用来在宏后面追加额外的字符。使用 .cexpression 附加在宏后面的 cexpression 也可以是一个宏。如果 cexpression 是一个属性名, 包括一个额外的点号 (cexpression..propertyname)。
备注
宏替换把内存变量和数组元素中的内容当作原义字符串。当连字符 (&) 位于字符型内存变量或数组元素前面时,内存变量和数组元素的内容将替代宏引用。宏替代可用在任何接受原义字符串的命令和函数中。
提示 请尽可能使用名称表达式来取代宏替换。名称表达式与宏替换作用相似,但是,名称表达式限于传递作为名称的字符串。当命令或函数接受名称(文件名、窗口名、菜单名等)时,使用名称表达式的处理速度要明显快得多。有关名称表达式的详细内容,请参阅语言概述。
下列代码可以正确执行:
store 'customer' to gctablename
store 'company' to gctagname
use &gctablename order &gctagname
但是可以使用名称表达式代替:
use (gctablename) order (gctagname)
宏替换对于替换命令中的关键字是很有用的。在下面的示例中,把 talk 设置保存在内存变量中,以便后面的程序能够恢复它。talk 的原始设置使用宏替换恢复。
示例
store set('talk') to gcsavetalk
set talk off
*
* 额外的程序代码
*
set talk &gcsavetalk && 恢复原始的 talk 设置
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯