您的位置:首页 > 产品设计 > UI/UE

PowerBuilder9对中文字符串的处理方法

2010-03-14 16:45 239 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: