vfp中如何将汉字转为拼音

流星尔 流星尔 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
1、vfp函数(摘自myf1,改正了其中的参数中有空格的BUG)

******汉字转拼音*****
func hztostr(hzstr) as string
local py,i,j,c
private p0
p0="吖八嚓咑妸发旮铪讥讥咔垃呣拿讴趴七呥仨他哇哇哇夕丫匝咗"
py=""
for i=1 to lenc(hzstr)
C='z'
IF EMPTY(ALLTRIM(SUBSTRC(hzstr,i,1)))
c=''
ELSE

for j=1 to 26
if substrc(hzstr,i,1)<substrc(p0,j,1)
C=chr(95+j)
EXIT
endif
NEXT
endif
py=py+C
next
retu py

在vfp中调用
set proc to sysproc
?hztostr('刘建军') 结果显示ljj

2、sql server用户自定义函数

CREATE function dbo.hztostr(@hzstr varchar(200))
returns varchar(400)
as
begin

declare @py varchar(800),@i int,@j int,@c varchar(10),@p0 varchar(800),@cSTR varchar(10)
set @p0='吖八嚓咑妸发旮铪讥讥咔垃呣拿讴趴七呥仨他哇哇哇夕丫匝咗'
set @py=''
set @i=1
set @j=1
while @i<=len(@hzstr)
begin
set @c='z'
set @cSTR=substring(@hzstr,@i,1)

if @cstr=''
set @c=''
else
begin

if not unicode(@cSTR) between 19968 and 40870
set @c=@cSTR
else
set @j=1

while @j<=26
begin
if @cSTR<substring(@p0,@j,1)
begin
set @c=char(95+@j)
break
end
set @j=@j+1
end
end
set @py=@py+@c
set @i=@i+1
end
return @py
end
go

然后在查询分析中调用
select dbo.hztostr('刘建军') 结果显示ljj


...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部
流星尔
VFP 2,750 成员 29,142 内容