总结自己写的小算法(一)

编码的过程中,总有一些情况是始料未及并且网上也没有任何资料的
这时候需要我们自己去应对 (废话


蓝牙打印换行

  • 先贴代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

//蓝牙打印换行

private String setUpMultilineTxt(int index,int txtX ,int txtY, String content){
final int TXTHEIGHT = 30;

String ml = "";
int length = content.length();
if (length <= index) {
ml = printUtil.drawText(0, 1, txtX, txtY, content);
} else {
int sumLine = length / index + 1;
StringBuffer sb = new StringBuffer();
for (int i = 0; i < sumLine; i++) {
if (i == (sumLine - 1)) {
String lastLine = content.substring(index * (sumLine - 1), length);
sb.append(printUtil.drawText(0, 1, txtX, txtY + TXTHEIGHT * (sumLine - 1), lastLine));
} else {
String line = content.substring(index * i, index * (i + 1));
sb.append(printUtil.drawText(0, 1, txtX, txtY + TXTHEIGHT * i, line));
}
}
ml = sb.toString();
}
return ml;
}


  • 需求

    这个demo 做了基于CPCL指令集的蓝牙打印机的打印操作

    后来项目中遇到了 地址太长需要换行的情况
    看了指令集说明发现有 换行指令 操作后没有效果 (愚蠢)
    反复思考后决定自己写一个 (T_T)

  • 思路

    核心想法是将限制输入字符串的长度, 超出后计算可以打印的行数, 并进行拼接输出

    行数 = 输入字符串的长度 / 每行限定长度

    超出两行的字符串需要进行(字符串长度 * 行数)的计算

  • 实现

    • 判断输入字符串是否满足一行
    • 超出一行后统计总行数
    • 遍历行数 其中要判断是否是最后一行 根据每行计算文字的输出与位置
      String line = content.substring(index * i, index * (i + 1));

END