1     /**
 2      * 根据元数据和目标ascii位数截取字符串,失败返回-1
 3      * @param sourceStr    元数据字符串    
 4      * @param endIndex    截取到第几位
 5      * @return 结果字符串
 6      */
 7     public static String indexOf(String sourceStr,int endIndex){
 8         int length = 0;
 9         StringBuilder result = new StringBuilder();
10         List<String> resultList = new ArrayList<String>(); 
11         for(int i = 0; i < sourceStr.length(); i++){
12             int ascii = Character.codePointAt(sourceStr,i);
13             if(ascii >= 0 && ascii <=255){
14                 length++;
15                 resultList.add(String.valueOf(ascii));
16             }else{
17                 length+=2;
18                 resultList.add(String.valueOf(ascii));
19             }
20             if(length>0){
21                 if((length==sourceStr.length() && length <= endIndex) || length == endIndex || length == endIndex-1){
22                     for (String string : resultList) {
23                         result.append(asciiToString(string));
24                     }
25                     return result.toString();
26                 }
27             }
28         }
29         //return String.valueOf("-1");
30         /**
31          * 根据业务要求,如果传进来的参数为空值的时候默认返回空字符串
32          */
33         return "";
34     }
35     
36     /**
37      * 将ascii码转换为utf-8
38      * @param value ascii编码 多个以,号分割
39      * @return 结果字符串
40      */
41     public static String asciiToString(String value) {
42         StringBuffer sbu = new StringBuffer();
43         String[] chars = value.split(",");
44         for (int i = 0; i < chars.length; i++) {
45             sbu.append((char) Integer.parseInt(chars[i]));
46         }
47         return sbu.toString();
48     }