首页 / JAVA / java处理含有中文的字符串.
java处理含有中文的字符串.
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java处理含有中文的字符串.,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2432字,纯文字阅读大概需要4分钟。
内容图文
1. 问题描述:
原始数据是以行为单位的, 每行固定长度931个字节, 汉字占2个字节, 按照字典描述,共有96个字典,只有第32个字典为中文地址, 所以需要单独处理. 由于项目设计保密,故删除敏感数据. 供实验的数据是测试数据.
在处理过程中,按照规定的字典长度截取字符串的时候,发现处理到汉字的时候出错. 那就需要单独处理汉字. 比较麻烦. 所以写了如下简便方法, 如有更好的解决方案,还请多多交流.
2. 解决方案:
源码:
package com.dk.rf; import java.io.*; import java.util.ArrayList; import java.util.List; /** * Created by zzy on 17/1/9. */publicclass ReadFile { publicstaticvoid main(String[] args) { String path = "/Users/zzy/Downloads/QQdownload/test-readhanzi.txt"; readFileByLines(path); } /** * 以行为单位读取文件,常用于读面向行的格式化文件 */publicstaticvoid readFileByLines(String fileName) { File file = new File(fileName); BufferedReader reader = null; try { System.out.println("以行为单位读取文件内容,一次读一整行:"); // reader = new BufferedReader(new FileReader(file)); reader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"GBK")); String tempString = null; int line = 1; // 一次读入一行,直到读入null为文件结束while ((tempString = reader.readLine()) != null) { handleLines(tempString); char [] chars; chars = tempString.toCharArray(); line++; if (line > 100){ break ; } } reader.close(); } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e1) { } } } } /** * 处理一行 * @param line */publicstaticvoid handleLines(String line){ // System.out.println(line.length()); // 每一行数据分为96个字段 List strList = new ArrayList(); int start = 0; int end = 0; int [] ss = {42,42,42,8,3,1,1,1,1,1, 6,10,11,11,11,11,11,21,21,21, 4,6,12,4,6,4,3,2,12,6, 8,15,40,3,4,6,10,1,1,5, 2,2,2,2,4,4,11,11,12,12, 12,12,3,3,8,1,8,8,8,8, 8,8,8,8,8,8,8,1,16,8, 8,8,8,8,8,32,2,1,2,14, 4,3,9,12,3,1,8,1,12,15, 21,1,2,1,1,97 }; for (int i = 0; i < ss.length; i++ ){ if (i == 32){ // 单独处理地址char[] cc = line.toCharArray(); int ss_32=0 ;// int ff = 0; System.out.println("-------"+start); for (int j = start; j < start+ss[i]; j++) { ss_32++; ff ++; if (!isLetter(cc[j])){ // 如果是汉字 ss_32++; } if (ss_32 == 40){ ss[i] = ff; break; } } } end = start + ss[i]; if(start>=line.length()) return; String temp = line.substring(start, end); start = end; strList.add(temp); System.out.println("ss["+ i+ "]"+ss[i]+"temp="+temp); // TO ,设计业务,需要继续,春节后交接 } } /** * 判断一个字符是Ascill字符还是其它字符(如汉,日,韩文字符) * * @param c * @return*/publicstaticboolean isLetter(char c) { int k = 0x80; return (c / k) == 0 ? true : false; } }
3. 相关文件:
原文:http://www.cnblogs.com/chaoren399/p/6306979.html
内容总结
以上是互联网集市为您收集整理的java处理含有中文的字符串.全部内容,希望文章能够帮你解决java处理含有中文的字符串.所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。