把一个字符串按一定的长度分割成多段,里面的中文不能被分开,比如短信只能140个字节,因此一条长短信需要分开来发
public static String[] split(String string, int size) {
        
if (size < 2)
            
throw new IllegalArgumentException("最小长度为两个字节");
        
byte[] bytes = string.getBytes();
        
if (bytes.length <= size)
            
return new String[] { string };
        
// 分成的条数不确定(整除的情况下也许会多出一条),所以先用list再转化为array
        List list = new ArrayList();
        
int offset = 0;// 偏移量,也就是截取的字符串的首字节的位置
        int length = 0;// 截取的字符串的长度,可能是size,可能是size-1
        int position = 0;// 可能的截取点,根据具体情况判断是不是在此截取
        while (position < bytes.length) {
            position 
= offset + size;
            
if (position > bytes.length) {
                
// 最后一条
                String s = new String(bytes, offset, bytes.length - offset);
                list.add(s);
                
break;
            }
            
if (bytes[position - 1> 0
                    
|| (bytes[position - 1< 0 && bytes[position - 2< 0))
                
// 截断点是字母,或者是汉字
                length = size;
            
else
                
// 截断点在汉字中间
                length = size - 1;
            String s 
= new String(bytes, offset, length);
            list.add(s);
            offset 
+= length;
        }
        String[] array 
= new String[list.size()];
        
for (int i = 0; i < array.length; i++)
            array[i] 
= (String) list.get(i);
        
return array;
    }

    
public static void main(String[] args) {
        String s 
= "我xxx爱NBA";
        
for (int i = 2; i <= s.getBytes().length; i++)
            System.out.println(StringUtils.join(split(s, i), 
","));
    }


输出结果是:

我,xx,x,爱,NB,A
我x,xx,爱N,BA
我xx,x爱N,BA
我xxx,爱NBA
我xxx,爱NBA
我xxx爱,NBA
我xxx爱N,BA
我xxx爱NB,A
我xxx爱NBA