这个文章不管打印机的连接的问题,仅仅将一些常用的方法写出来方便以后使用。
居中:
//居中代码
//参数text为需要居中的文字,参数len为要在多长的范围内居中。
private String Centered(String text,int len)
{
String returnStr="";
if(TypefaceLen(text)>len)
{
//字符串超出规定的最大长度进行错误处理
System.out.print("字符串"+text+"超出规定的最大长度");
}
//需要输入的空格的长度
int SpaceLen=0;
//得到剩下多少空字符
SpaceLen=len-TypefaceLen(text);
//在前面打印空格
for(int i=0;i<SpaceLen/2;i++)
{
returnStr+=" ";
}
//在中间添加字符串
returnStr+=text;
//因为SpcaeLen可能为奇数,在进行整除时会损失一位长度,因此这里进行判断是否需要补位
if(2*(SpaceLen/2)!=SpaceLen)
returnStr+=" ";
return returnStr;
}
获取中英混合的字符长度:
//获得字符串的字符长度(因为打印过程中,中英文字符所占据的长度是不同的。中文占据两个字符的长度,而英文占据1个字符的长度)
//这里将所有的字符串内容换算成统一单位“字符长度”
//本段代码只能负责转换中英文混杂的情况,如有其他国家的语言请根据情况调整代码
private int TypefaceLen(String text)
{
int count = 0;//汉字数量(目前只能判断汉字的个数,如果使用双字节表达式会出现“双字节空格”这种奇怪的情况。因此,这里只判断汉字不判断中文标点
String regEx = "[\\u4e00-\\u9fa5]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(text);
int len = m.groupCount();
while (m.find()) {
for (int i = 0; i <= len; i++) {
count = count + 1;
}
}
//汉字的相当于两个字符,所以在原有的长度上再加上一次汉字个数
return text.length()+count;
}
数字转换成大写汉字:
//数字转换成大写汉字
private String UpNumber(float num)
{
//保留小数点后两位
DecimalFormat decimalFormat=new DecimalFormat(".00");
String p=decimalFormat.format(num);
String str="";
// 货币大写形式
String bigLetter[] = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
// 货币单位
String unit[] = {"元", "拾", "佰", "仟", "万",
// 拾万位到仟万位
"拾", "佰", "仟",
// 亿位到万亿位
"亿", "拾", "佰", "仟", "万"};
String small[] = {"分", "角"};
String numStr=p;
int i=0,j=0;
//从后向前数
for (i=numStr.length()-1;;i--)
{
//当发现小数点时跳出循环,此时小数点后面的内容输入完成
if(numStr.charAt(i) == '.')
{
i--;
break;
}
str+=small[j++];
//这里不能用类型强转,那样会被强转成ASCII码
str+=bigLetter[Integer.parseInt(String.valueOf(numStr.charAt(i)))];
}
//小数点前面的整数部分输入完成
for(j=1;i>=0;i--){
str+=unit[j++];
str+=bigLetter[Integer.parseInt(String.valueOf(numStr.charAt(i)))];
}
//得到一个反的字符串,现在我们开始反转字符串,并将字符串返回
return new StringBuilder(str).reverse().toString();
}