java处理文本类:修改标题的格式

1 篇文章 0 订阅

文本处理工具类

前言:自己下载的小说中关于每个章节样式都是:001,002,003,004,005,可是我的手机端的可以识别的样式都是:第一章,第二章,第三章,所以好生气?,没办法,只能自己写一个工具类封装好一些方法,然后,将文本转化为自己想要的标题格式。
维护文本标题修改工具类:

package org.apache.dubbo.demo;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

//有一部小说中的章节都是001.002,手机阅读软件不识别,特别开发这个类进行字符串处理
public class TextUtil {
    //    将数字转化成固定长度格式的字符串:001
    public static String numToString(Integer num, Integer length) {
        {
            String str = new String();
//        数的log10(num)
            Integer n = (int) (Math.log(num) / Math.log(10));
            for (int i = 1; i < length - n; i++) {
                str = str + "0";
            }
            str = str + num + "";
            return str;
        }
    }
//    将数字转化为中文数字
    public static String numToChina(Integer num) {
//      Integer n = (int) (Math.log(num) / Math.log(10));
        String cnum[] = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"};
        String placenum[] = {"十", "百", "千"};
        String s = new String();
        List<Integer> list = TextUtil.getNum(num);
        System.out.println(list.size()+"=====");
//        处理个位数
        if (list.size()==1){
            s=cnum[num];
            return s;
        }
//        处理十位数
        if (list.size()==2){
            if (list.get(1)==1){
                s=placenum[0];
            }else {
                s=cnum[list.get(1)]+placenum[0];
            }
            if (list.get(0) != 0) {
                s = s + cnum[list.get(0)];
            }
            return s;
        }
//        三位数的组成方式:
        /*
        * 两百三十二
        * 两百零二
        * 两百
        * */
        if (list.size()==3){
            s = cnum[(num / 100)] + placenum[1];
            if (list.get(2)!=0){
                s=s+cnum[list.get(2)] + placenum[0];
            }else {
                s=s+cnum[list.get(2)];
            }
            if (num % 10 != 0) {
                s = s + cnum[num % 10];
            }
            return s;
        }
        return s;
    }

//   倒序将数字位数存入list中
    static List<Integer> list=new ArrayList<Integer>();
    public static List<Integer> getNum(Integer num){

        Integer x=num;
        if (x<10){
            list.add(x);
            List<Integer> result = new ArrayList<>();
            result.addAll(list);
            list.clear();
            return result;
        }else {
            list.add(x%10);
        }
        return getNum(x/10);
    }

    public static void main(String[] args) {

        FileReader fr=null;
        FileWriter fw=null;
        BufferedReader br=null;
        BufferedWriter bw=null;

        try {
            StringBuffer sb = new StringBuffer();
            fr = new FileReader("D:\\Work\\learnproject\\incubator-dubbo\\dubbo-demo\\dubbo-demo-api\\src\\main\\java\\org\\apache\\dubbo\\demo\\01.txt");
            br = new BufferedReader(fr);
            fw = new FileWriter("D:\\Work\\learnproject\\incubator-dubbo\\dubbo-demo\\dubbo-demo-api\\src\\main\\java\\org\\apache\\dubbo\\demo\\02.txt");
            bw=new BufferedWriter(fw);
            String n;
            while ((n=br.readLine())!=null){
                sb.append(n+"\n");
            }
            String s=sb.toString();
            for (int i = 1; i <999 ; i++) {
                int count = sb.toString().indexOf(TextUtil.numToString(i, 3));
                if (count==-1){
                    break;
                }else {
                    s = s.replace(TextUtil.numToString(i, 3)+"、", "第"+TextUtil.numToChina(i)+"章 ");
                }
            }
            bw.write(s);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                bw.close();
                fw.close();
                br.close();
                fr.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

初始版本1

package org.apache.dubbo.demo;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

//有一部小说中的章节都是001.002,手机阅读软件不识别,特别开发这个类进行字符串处理
public class TextUtil {
    //    将数字转化成固定长度格式的字符串:001
    public static String numToString(Integer num, Integer length) {
        {
            String str = new String();
//        数的log10(num)
            Integer n = (int) (Math.log(num) / Math.log(10));
            for (int i = 1; i < length - n; i++) {
                str = str + "0";
            }
            str = str + num + "";
            return str;
        }
    }
//    将数字转化为中文数字
    public static String numToChina(Integer num) {
        Integer n = (int) (Math.log(num) / Math.log(10));
        String cnum[] = {"零","一", "二", "三", "四", "五", "六", "七", "八", "九", "十"};
        String placenum[] = {"十", "百", "千"};
        String s = new String();
        if (n == 0) {
            s = cnum[num];
            return s;
        }
        if (n == 1) {
            s = cnum[(num / 10)] + placenum[0];
            if (num%10!=0){
                s = s+ cnum[num % 10];
            }
            return s;
        }
        if (n == 2) {
            List<Integer> list1 = getNum(num);

            s = cnum[(num / 100)] + placenum[1] + cnum[list1.get(2)] + placenum[0];
            if (num%10!=0){
                s=s  + cnum[num % 10];
            }
            return s;
        }
        return null;
    }
//   倒序将数字位数存入list中
    static List<Integer> list=new ArrayList<Integer>();
    public static List<Integer> getNum(Integer num){
        Integer x=num;
        if (x<10){
            list.add(x);
            return list;
        }else {
            list.add(x%10);
        }
        return getNum(x/10);
    }

    public static void main(String[] args) {

        FileReader fr=null;
        FileWriter fw=null;
        BufferedReader br=null;
        BufferedWriter bw=null;

        try {
            StringBuffer sb = new StringBuffer();
            fr = new FileReader("D:\\Work\\learnproject\\incubator-dubbo\\dubbo-demo\\dubbo-demo-api\\src\\main\\java\\org\\apache\\dubbo\\demo\\01.txt");
            br = new BufferedReader(fr);
            fw = new FileWriter("D:\\Work\\learnproject\\incubator-dubbo\\dubbo-demo\\dubbo-demo-api\\src\\main\\java\\org\\apache\\dubbo\\demo\\02.txt");
            bw=new BufferedWriter(fw);
            String n;
            while ((n=br.readLine())!=null){
                sb.append(n+"\n");
            }
            String s=sb.toString();
            for (int i = 1; i <999 ; i++) {
                int count = sb.toString().indexOf(TextUtil.numToString(i, 3));
                if (count==-1){
                    break;
                }else {
                    s = s.replace(TextUtil.numToString(i, 3)+"、", "第"+TextUtil.numToChina(i)+"章 ");
                }
            }
            bw.write(s);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                bw.close();
                fw.close();
                br.close();
                fr.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

测试文本:

001、龙珠
002、孩子额汪
003、路基转

测试结果:

第一章 龙珠
第二章 孩子额汪
第三章 路基转
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值