zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    单反相机的传奇—佳能单反50年辉煌之路(连载十五)
    单反相机的传奇—佳能单反50年辉煌之路(连载十二)
    单反相机的传奇—佳能单反50年辉煌之路(连载十四)
    单反相机的传奇—佳能单反50年辉煌之路(连载十六)
    GUID的使用
    C#中的活动目录开发
    C# 窗体桌面定位问题
    C#TCPClient应用一个简单的消息发送和接收
    SQL表间连接
    放弃VMware改投VirtualBox的五个理由
  • 原文地址:https://www.cnblogs.com/PBDragon/p/1685604.html
Copyright © 2011-2022 走看看