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

 

posted @   PBDragon  阅读(1999)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
点击右上角即可分享
微信分享提示