天天看點

正則解決字元串超出長度的問題

有時候我們會遇到這樣的情況,顯示的空間不足以顯示所有的字元串。

正則解決字元串超出長度的問題

這有時候我們一般的解決方式是截取字元串的前一段,後面的用..來代替。

但是這樣同時也會出現一種問題,那就是中文和英文的占用長度是不一樣的。是以單純的用str.substring(0,n);是不合适的。

這裡用正則稍微轉化一下,我們判斷如果是中文(包括繁體)的話長度就+2,其他的符号的就加1,這樣看來其就會合适許多。

如果輸入的是:劉類類類類類

則會傳回:劉類類..

如果輸入的是:劉類

則會傳回:劉類

至于長度的設定隻需要修改maxnum的值就可以了。

public class Test12 {
static int maxnum=6;
 public static void main(String[] args) {
        String str="劉gfeng";
        System.out.println(returnName(str));
    }
    public static String returnName(String str){
        StringBuilder builder=new StringBuilder();
        Pattern p = Pattern.compile("[\u4E00-\u9FA5]");

        int num=0;
        for(int i=0;i<str.length();i++){
            String substring = str.substring(i,i+1);
            if(p.matcher(substring).matches()){
                num+=2;
            }else{
                num++;
            }
            builder.append(substring);
            if(num>=maxnum)return builder.append("..").toString();
        }
        return builder.toString();
    }
}