按字符大小分割字符串

最近在做小票打印机的项目,其中需要将商品名按照固定字符长度分割展示。

解决思路:获得应该被分割的位置数组。然后直接按照数组分割商品名填充到打印的数据中。

/**
* 得到一个字符串应该被分割的位置数组
* @param s
* @return
*/
public static int[] lengthSplitArr(@NotNull String s, int splitSize) {
if (s == null)
return new int[0];
char[] c = s.toCharArray();
int[] temp = new int[(c.length * 2 / splitSize) + 1];
int loc = 0;
int clearPoint = 0;
int splitPoint = clearPoint + splitSize;
int len = 0;
for (int i = 0; i < c.length; i++) {
len++;
if (!isLetter(c[i])) {
len++;
}
if (len >= splitPoint) {
if (len > splitPoint) {
clearPoint = splitPoint - 1;
temp[loc] = i - 1;
} else if(len == splitPoint){
clearPoint = splitPoint;
temp[loc] = i;
}
loc++;
splitPoint = clearPoint + splitSize;
}
}
int [] result = new int[loc];
System.arraycopy(temp, 0, result, 0, loc);
return result;

}

猜你喜欢

转载自www.cnblogs.com/zixiaoguan/p/9068182.html