public static String[] split(String string, int size) {
if (size < 2)
throw new IllegalArgumentException("鏈灝忛暱搴︿負(fù)涓や釜瀛楄妭");
byte[] bytes = string.getBytes();
if (bytes.length <= size)
return new String[] { string };
// 鍒嗘垚鐨勬潯鏁頒笉紜畾(鏁撮櫎鐨勬儏鍐典笅涔熻浼?xì)澶氬囖Z竴鏉?,鎵浠ュ厛鐢╨ist鍐嶈漿鍖栦負(fù)array
List list = new ArrayList();
int offset = 0;// 鍋忕Щ閲?涔熷氨鏄埅鍙栫殑瀛楃涓茬殑棣栧瓧鑺傜殑浣嶇疆
int length = 0;// 鎴彇鐨勫瓧絎︿覆鐨勯暱搴?鍙兘鏄痵ize,鍙兘鏄痵ize-1
int position = 0;// 鍙兘鐨勬埅鍙栫偣,鏍規(guī)嵁鍏蜂綋鎯呭喌鍒ゆ柇鏄笉鏄湪姝ゆ埅鍙?/SPAN>
while (position < bytes.length) {
position = offset + size;
if (position > bytes.length) {
// 鏈鍚庝竴鏉?/SPAN>
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))
// 鎴柇鐐規(guī)槸瀛楁瘝,鎴栬呮槸姹夊瓧
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 = "鎴憍xx鐖盢BA";
for (int i = 2; i <= s.getBytes().length; i++)
System.out.println(StringUtils.join(split(s, i), ","));
}
杈撳嚭緇撴灉鏄?
鎴?xx,x,鐖?NB,A
鎴憍,xx,鐖盢,BA
鎴憍x,x鐖盢,BA
鎴憍xx,鐖盢BA
鎴憍xx,鐖盢BA
鎴憍xx鐖?NBA
鎴憍xx鐖盢,BA
鎴憍xx鐖盢B,A
鎴憍xx鐖盢BA

]]>