properties语言包字数统计
程序员文章站
2022-05-31 07:57:50
...
今天需要做个预算,需要统计语言包中要翻译的中文文字数,文字有汉字和Unicode码,想了想还是动动手写点代码来统计。
先取一下目录下所有的文件。扔到Excel里。
然后运行下列代码:
注意修改final HSSFSheet sheet = wb.getSheetAt(4); 中的sheet页:4取的是第5个sheet。
System.out.println(a);会输出文件的字数。复制到sheet中方便统计。
代码如下:
package com.hoperun.eesite.modules.listener;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import com.hoperun.eesite.common.utils.StringUtils;
public class getContentSize {
public static void main(String[]args) throws FileNotFoundException, IOException{
final File file = new File("E:\\Project\\SD-WAN\\语言包统计.xls");
final ArrayList<ArrayList<Object>> rowList = new ArrayList<ArrayList<Object>>();
ArrayList<Object> colList;
final HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(file));
final HSSFSheet sheet = wb.getSheetAt(4);
HSSFRow row;
HSSFCell cell;
// for (int i = sheet.getFirstRowNum(), rowCount = 0; rowCount < sheet.getPhysicalNumberOfRows(); i++)
for (int i = sheet.getFirstRowNum(), rowCount = 0; rowCount < 192; i++)
{
row = sheet.getRow(i);
colList = new ArrayList<Object>();
if (row == null)
{
//当读取行为空时
if (i != sheet.getPhysicalNumberOfRows())
{//判断是否是最后一行
rowList.add(colList);
}
continue;
}
else
{
rowCount++;
}
cell = row.getCell(1);
String fileNamde = cell.getStringCellValue();
int a = getContent(fileNamde);
System.out.println(a);
}
}
public static int getContent(String path) throws IOException{
//获取文件对应的BufferedReader
BufferedReader br = new BufferedReader(new FileReader(new File(path)));
String tempstr; //临时字符串
int num_of_words = 0; //总汉字数
//int num_of_wordsAndPunctuation = 0; //汉字+标点
//int num_blank = 0; //空格字符
int linenull = 0;
Pattern pattern = Pattern.compile("([\u4e00-\u9fa5]{1})"); //定义匹配模式:1个汉字
// Pattern pattern2 = Pattern.compile("([\u4e00-\u9fa5,,.。、/<>??;;'‘’:\"【】{}]{1})"); //定义匹配模式:汉字或标点符号
// Pattern pattern3 = Pattern.compile("[\\s]");
// while((tempstr = br.readLine()) != null && tempstr != ""){
while( linenull< 5){
tempstr = br.readLine();
if(!StringUtils.isBlank(tempstr)&&tempstr.indexOf("\\u")>0) {
tempstr = unicode2String(tempstr);
}
//汉字匹配,统计字数
if (tempstr!=null && !tempstr.isEmpty()){
Matcher matcher = pattern.matcher(tempstr);
while(matcher.find()) num_of_words++;
}
//
// //汉字标点匹配,统计字数
// Matcher matcher2 = pattern2.matcher(tempstr);
// while(matcher2.find()) num_of_wordsAndPunctuation++;
//
// //空格匹配,统计字数
// Matcher matcher3 = pattern3.matcher(tempstr);
// while(matcher3.find()) num_blank++;
// System.out.println("tempstr:/" + tempstr+"/"+tempstr.length());
if (tempstr==null || tempstr.isEmpty()){
linenull++;
// System.out.println("linenull:" + linenull);
}
tempstr = "";
}
br.close(); //关闭文件
//
return num_of_words;
}
public static String unicode2String(String unicode){
if(StringUtils.isBlank(unicode))return null;
StringBuilder sb = new StringBuilder();
int i = -1;
int pos = 0;
while((i=unicode.indexOf("\\u", pos)) != -1){
sb.append(unicode.substring(pos, i));
if(i+5 < unicode.length()){
pos = i+6;
sb.append((char)Integer.parseInt(unicode.substring(i+2, i+6), 16));
}
}
return sb.toString();
}
}
上一篇: Python3安装核心价值观包报错
推荐阅读
-
Spring Boot的properties配置文件读取
-
Spring用代码来读取properties文件实例解析
-
Spring Boot中配置文件application.properties使用
-
详解Spring加载Properties配置文件的四种方式
-
浅谈java Properties类的使用基础
-
Java代码实现对properties文件有序的读写的示例
-
详解Intellij IDEA中.properties文件中文显示乱码问题的解决
-
spring boot使用properties定义短信模板的方法教程
-
Spring Properties的使用和配置方法
-
iOS输入框的字数统计/最大长度限制详解