打印机程序中常用的方法

这个文章不管打印机的连接的问题,仅仅将一些常用的方法写出来方便以后使用。
居中:

//居中代码
    //参数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();
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值