function titleb(str,strlen)
dim l,t,c, i
l=len(str)
t=0
for i=1 to l
c=Abs(Asc(Mid(str,i,1)))
if c>255 then
t=t+2
else
t=t+1
end if
if t>=strlen then
titleb=left(str,i)&"…"
exit for
else
titleb=str&""
end if
next
end function
请高手 用java实现这个功能!  谢谢!

解决方案 »

  1.   

    那位大侠知道 java   怎么获取字母的 ANSI 字符代码小弟 在线等呢
      

  2.   

    尝试下这个类 if (Character.UnicodeBlock.of(analyseStr.charAt(i)) == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS) {
    if (eng_size != 0) {
    result += (eng_Str + "/");
    eng_Str = "";
    eng_size = 0;
    }
      

  3.   

    function 
    end function 
    .....
      

  4.   

    有事刚才忙了,JAVA如下:
    private String titleb(String str,int lenx)
    {
    String tmp="";
    int l,t,c,i;
    char  x;
    l=str.length();
    t=0;
    for(i=1;i<l;i++)
    {
    x=str.charAt(i);
    //c=Math.abs(x.hashCode());
    c=Math.abs((byte)x);
    if(c>255)
    t+=2;
    else
    t+=1;
    if (t>=lenx)
    {
    tmp=str.substring(0, i)+"...";
    break;
    }
    else
    tmp=tmp+"";
    }
    return tmp;
    }
      

  5.   

    忘了说明前面还有个引用包的问题,干脆全部给出来:文件名称:J2SE001.java代码如下:
    package sour001;
    import java.io.*;
    import java.awt.*;
    import javax.swing.*;
    import java.math.*;
    import java.lang.*;
    public class J2SE001 {
    public static void main(String[] args) { J2SE001 ob=new J2SE001();
    String b="ASDFsldkfjaJava 本地编程接口(Java Native Interface,JNI) 易懂且容易上手,但对于一些新手甚至于一kjasdlkfjasdf";
    String a;
    a=ob.titleb(b,20);    //引用
    System.out.print(a);
    }
    private String titleb(String str,int lenx)
    {
    String tmp="";
    int l,t,c,i;
    char  x;
    l=str.length();
    t=0;
    for(i=1;i<l;i++)
    {
    x=str.charAt(i);
    //c=Math.abs(x.hashCode());
    c=Math.abs((byte)x);
    if(c>255)
    t+=2;
    else
    t+=1;
    if (t>=lenx)
    {
    tmp=str.substring(0, i)+"...";
    break;
    }
    else
    tmp=tmp+"";
    }
    return tmp;
    }
    }
    测试结果输出:
    ASDFsldkfjaJava 本地编程接口(Java Native Interface,JNI) ...