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

這有時候我們一般的解決方式是截取字元串的前一段,後面的用..來代替。
但是這樣同時也會出現一種問題,那就是中文和英文的占用長度是不一樣的。是以單純的用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();
}
}