注册 登录
编程论坛 VFP论坛

提取字段中有效数据

sarge_xp 发布于 2021-04-28 06:46, 2056 次点击
一个字段包含2个字段的数据,格式为“1.3斤2.47%”,1.3斤存为“重量”,2.47%存为份量,看似简单,在提取数据过程中出现麻烦,参见以下代码



? AT("倍","1.3斤2.47%")
? AT("%","1.3斤2.47%")
? RIGHTC(LEFTC("1.3斤2.47%",AT("%","1.3斤2.47%")-1),AT("倍","1.3斤2.47%")+2)


? LEFTC("1.3斤2.47%",(AT("%","1.3斤2.47%")-1))
? LEFTC("1.3斤2.47%",11)
? LEFTC("1.3斤2.47%",10)
? LEFTC("1.3斤2.47%",9)


? len("1.3斤2.47%")


? LEFTC("1.3斤2.47%",8)
? LEFTC("1.3斤2.47%",7)
? LEFTC("1.3斤2.47%",6)
? LEFTC("1.3斤2.47%",5)
? LEFTC("1.3斤2.47%",4)
? LEFTC("1.3斤2.47%",3)



? LEFTC("1.3斤2.47%",2)
*****************



? LEFTC("1.3斤2.47%",11)
? LEFTC("1.3斤2.47%",10)
? LEFTC("1.3斤2.47%",9)  问题出现在这三行,显示的结果一样,是什么原因呢 ? 斤与%为双字符,但也不可能有相同的显示结果
11 回复
#2
xuminxz2021-04-28 07:50
一共只有9个字符,大于9与9的效果一样啊。
leftc双字节与单字节都算一个字符。
#3
mywisdom882021-04-28 08:34
格式是固定的吗。与什么字符来分割?
#4
radiofan2021-04-28 09:09
斤之前的是重量,斤之后的是份量,斤作为分隔符即可呀!
#5
radiofan2021-04-28 09:15
aa="1.3斤2.47%"
?LEFT(aa,AT("斤",aa)-1)
?STRTRAN(RIGHT(aa,AT("斤",aa)+2),"%","")
#6
吹水佬2021-04-28 09:20
份量 = STREXTRACT("1.3斤2.47%","斤")
重量 = STRTRAN("1.3斤2.47%",份量,"")
? 重量
? 份量
#7
sdta2021-04-28 12:06
x ="1.3斤2.47%"
?SUBSTR(x, 1, AT("斤", x) + 1)
?SUBSTR(x, AT("斤", x) + 2)
?VAL(x)

ALINES(la, x, 5, '斤' , '%')
?la[1], la[2]

[此贴子已经被作者于2021-4-28 21:22编辑过]

#8
瓜瓜19902021-04-28 20:08
用了leftc(),要和atc(),substrc()...这一套搭配使用了,用at()容易错
用strextract()定位提取字符也可

[此贴子已经被作者于2021-4-28 20:10编辑过]

#9
sarge_xp2021-04-29 04:16
回复 2楼 xuminxz
left() leftc()两者是否一样 ?
#10
sarge_xp2021-04-29 05:14
回复 7楼 sdta
x可以是字段吗 ?
#11
sdta2021-04-29 07:24
以下是引用sarge_xp在2021-4-29 05:14:58的发言:

x可以是字段吗 ?

可以
#12
radiofan2021-04-29 12:31
以下是引用吹水佬在2021-4-28 09:20:58的发言:

份量 = STREXTRACT("1.3斤2.47%","斤")
重量 = STRTRAN("1.3斤2.47%",份量,"")
? 重量
? 份量

1