Java - 对于指定的数据文件.统计数据行,大写字符,小写字符,分隔符,以及其他字符数据情况

Posted 小智RE0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java - 对于指定的数据文件.统计数据行,大写字符,小写字符,分隔符,以及其他字符数据情况相关的知识,希望对你有一定的参考价值。

示例文件位置; filePath

示例文件内容

完成demo代码

package com.lzq;

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

/**
 * @BelongsProject: xiaozhire0goods
 * @BelongsPackage: com.lzq
 * @Author: 小智RE0 --- 学习记录
 * @Date: 2022/12/17 13:18
 * @Description: TODO
 */
public class DemOperFileInfo 

    public static void main(String[] args) 

        //文件位置
        String filePath = "F:\\\\资料Demo\\\\demoTxt.txt";
        File file = new File(filePath);
        //若该路径文件不存在,先创建空文件;
        if (!file.exists()) 
            file.mkdir();
        

        //调用方法;
        List<PlineInfo> plineInfoList = getLineInfo(file);

        for (PlineInfo plineInfo : plineInfoList) 
            System.out.println("---------");

            System.out.println( "当前数据行: "+plineInfo.getLineInfo());
            System.out.println( "当前数据包含大写字符数: "+plineInfo.getUppers());
            System.out.println( "当前数据包含小写字符数: "+plineInfo.getLowers());
            System.out.println( "当前数据包含数字字符数: "+plineInfo.getNumbers());
            System.out.println( "当前数据包含分隔字符数: "+plineInfo.getSeParators());
            System.out.println( "当前数据包含其他字符数: "+plineInfo.getOthers());

            System.out.println("---------");
        
    


    //todo  需要实现的函数;

    /**
     * 实现对文件进行数据分析处理
     * @param file  源文件
     */
    private static List<PlineInfo> getLineInfo(File file) 
        //需要返回的结果;
        List<PlineInfo> plineInfoList = new ArrayList<>();
        //指定要输入的文件;当文件不存在,会抛异常
        FileReader fr = null;
        BufferedReader br = null;
        try 
            fr = new FileReader(file);
            //创建缓冲输入流对象;
            br = new BufferedReader(fr);
            //创建缓冲输出流对象;
            String lineStr = null;
            //设置循环,到文本末尾时停止;一行一行地读取字符;
            int lineNum = 1;
            while ((lineStr = br.readLine()) != null) 
                //当前行字符总个数;
                int totalSize = lineStr.length();
                //统计处理
                PlineInfo plineInfo = new PlineInfo();
                plineInfo.setLineInfo(lineNum);
                //统计大写字符;
                int upperNum = recordUpper(lineStr);
                plineInfo.setUppers(upperNum);
                //统计小写字符;
                int lowerNum = recordLower(lineStr);
                plineInfo.setLowers(lowerNum);
                //统计数字
                int numNum = recordNumber(lineStr);
                plineInfo.setNumbers(numNum);
                //统计分隔符;
                int seParatorsNum= recordSeParators(lineStr);
                plineInfo.setSeParators(seParatorsNum);
                //其他字符个数; 即总数减去其他个数;
                int otherNum = totalSize - upperNum - lowerNum - numNum - seParatorsNum;
                plineInfo.setOthers(otherNum);


                plineInfoList.add(plineInfo);
                //行数递增;
                lineNum++;
            

         catch (Exception e) 
            e.printStackTrace();
         finally 
            //关闭流;释放系统资源;
            if (br != null) 
                try 
                    br.close();
                 catch (IOException e) 
                    e.printStackTrace();
                
            

            if (fr != null) 
                try 
                    fr.close();
                 catch (IOException e) 
                    e.printStackTrace();
                
            
        

        return plineInfoList;

    

    //记录大写字符
    static int recordUpper(String str) 
        int count = 0;
        char[] chars = str.toCharArray();
        for (int i = 0; i < chars.length; i++) 
            if( chars[i] >='A' && chars[i] <='Z')
                count ++;
            
        
        return count;
    

    //记录小写字符
    static int recordLower(String str)
        int count = 0;
        char[] chars = str.toCharArray();
        for (int i = 0; i < chars.length; i++) 
            if(chars[i]  >='a' && chars[i] <='z')
                count ++;
            
        
        return count;
    

    //记录数字
     static int recordNumber(String str) 
        int count = 0;
        char[] chars = str.toCharArray();
        for (int i = 0; i < chars.length; i++) 
            if(chars[i] >='0' && chars[i] <='9')
                count ++;
            
        
        return count;
    

    //统计分隔字符
    static int recordSeParators(String str)
        int count = 0;
        char[] chars = str.toCharArray();
        for (int i = 0; i < chars.length; i++) 
            //空格 英文逗号 中文逗号 中文句号 英文句号 换行符 \\n 中英文分号  各种制表符
            if(chars[i] ==' ' || chars[i] ==',' || chars[i] == ','
                    || chars[i] == '。'  || chars[i] == '.' ||chars[i] == '\\n'
                    ||chars[i] == ';' ||chars[i] == ';'
                    ||chars[i] == '\\t')
                count ++;
            
        
        return count;
    


    
    //数据类
    static class PlineInfo 
        //文件行号;
        int lineInfo;
        //大写字符
        int Uppers;
        //小写字符
        int Lowers;
        //数字字符
        int Numbers;
        //换行符,指标符啥的
        int seParators;
        //其他字符;
        int others;

        public PlineInfo() 
        

        public PlineInfo(int lineInfo, int uppers, int lowers, int numbers, int seParators, int others) 
            this.lineInfo = lineInfo;
            Uppers = uppers;
            Lowers = lowers;
            Numbers = numbers;
            this.seParators = seParators;
            this.others = others;
        

        public int getLineInfo() 
            return lineInfo;
        

        public void setLineInfo(int lineInfo) 
            this.lineInfo = lineInfo;
        

        public int getUppers() 
            return Uppers;
        

        public void setUppers(int uppers) 
            Uppers = uppers;
        

        public int getLowers() 
            return Lowers;
        

        public void setLowers(int lowers) 
            Lowers = lowers;
        

        public int getNumbers() 
            return Numbers;
        

        public void setNumbers(int numbers) 
            Numbers = numbers;
        

        public int getSeParators() 
            return seParators;
        

        public void setSeParators(int seParators) 
            this.seParators = seParators;
        

        public int getOthers() 
            return others;
        

        public void setOthers(int others) 
            this.others = others;
        
    



运行之,效果

以上是关于Java - 对于指定的数据文件.统计数据行,大写字符,小写字符,分隔符,以及其他字符数据情况的主要内容,如果未能解决你的问题,请参考以下文章

java中poi怎么获取指定列的行数?

java中有没有 读取大文本文件(500MB以上),指定行数的某一行数据的类库? 有的话请给出教程,谢谢~

java如何将所有要入库的数据全部转为大写?

Mongodb命令行导入导出数据

java要怎么修改csv中指定行列位置的值

如何让SAS从第二行数据读取