Java文单缩略内容截取


今天一个朋友问我如何截取文章内容中的指定长度内容,多余了就加省略号,于是随手写了方法,顺便拿出给需要的人参考下:

 1    /**
 2     *    截取字符串的前targetCount个字符
 3     * @param str 被处理字符串
 4     * @param targetCount 截取长度
 5     * @param more 后缀字符串
 6     * @version 0.1
 7     * @author aithero
 8     * @return String
 9     */

10    public static String subContentString(String str, int targetCount,String more)
11    {
12      int initVariable = 0;
13      String restr = "";
14      if (str == null){
15        return "";
16      }
else if(str.length()<=targetCount){
17          return str;
18      }
else{
19        char[] tempchar = str.toCharArray();
20        for (int i = 0; (i < tempchar.length && targetCount > initVariable); i++{
21            String s1 = str.valueOf(tempchar[i]);
22            byte[] b = s1.getBytes();
23            initVariable += b.length;
24            restr += tempchar[i];
25        }

26      }

27      if (targetCount == initVariable || (targetCount == initVariable - 1)){
28        restr += more;
29      }

30      return restr;
31    }

32    
33    /**
34     * 截取指定文章内容
35     * @param str
36     * @param n
37     * @author aithero
38     * @return String 
39     */

40    public static String subContent(String str,int n)
41    {
42           //格式化字符串长度,超出部分显示省略号,区分汉字跟字母。汉字2个字节,字母数字一个字节
43            String temp= "";
44            if(str.length()<n){//如果长度比需要的长度n小,返回原字符串
45                return str;
46            }
else{
47                    int t=0;
48                    char[] tempChar=str.toCharArray();
49                    for(int i=0;i<tempChar.length&&t<n;i++)
50                    {
51                            if((int)tempChar[i]>=0x4E00 && (int)tempChar[i]<=0x9FA5)//是否汉字
52                            {
53                                    temp+=tempChar[i];
54                                    t+=2;
55                            }

56                            else
57                            {
58                                    temp+=tempChar[i];
59                                    t++;
60                            }

61                    }

62                    return (temp+"");
63            }

64    }
 
65

相关内容