PowerBuilder9对中文字符串的处理方法
PowerBuilder9对中文字符串的处理方法
环境:PowerBuilder9.03
由于PB9没有对Unicode的支持函数,处理汉字的字符串只能自己写函数处理。
以下给len()定义函数of_len()处理带汉字字符串。代码如下:
//////////////////////////////////////////////////////////////////////////////
//
// 函数: of_len
//
// 属性: public
//
// 参数: string as_str
//
// 返回: integer
//
// 功能:
// 返回字符串长度
//
//////////////////////////////////////////////////////////////////////////////
//声明
int li_len
int li_p
char lc_char
string ls_str
//赋值
ls_str= as_str
li_p = 1
//处理
do while len(ls_str)>= li_p
lc_char= mid(ls_str,li_p,1)
if asc(lc_char) >127 then
li_p += 2
li_len+= 2
else
li_p += 1
li_len+= 1
end if
loop
return li_len
对left()函数定义of_left()代替,代码如下:
//////////////////////////////////////////////////////////////////////////////
//
// 函数: of_left
//
// 属性: public
//
// 参数: string as_str
// integer ai_len
//
// 返回: string
//
// 功能:
// 得到字符串左部指定个数的字符
//
//////////////////////////////////////////////////////////////////////////////
//声明
char l_ch
int li_len
string ls_str
string ls_rtn
//赋值
li_len = of_len(as_str)
if ai_len>= li_len then return as_str
ls_str= as_str
li_len= 1
//处理
do while li_len <= ai_len and len(ls_str)>=li_len
l_ch = mid(ls_str,li_len,1)
if asc(l_ch) >127 then
ls_rtn = ls_rtn + mid(ls_str,li_len,2)
li_len+= 2
ai_len+= 1
else
ls_rtn = ls_rtn + mid(ls_str,li_len,1)
li_len +=1
end if
loop
return ls_rtn
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探