- 浏览: 281453 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
jim8757:
能提供下完整的代码吗?
实例解析java + jQuery + json工作过程(登录) -
befairy:
收藏,谢谢LZ
基于Java、jQuery应用的账务管理系统开源了(09.3.19更新) -
Gilbert_Sam:
我看过这本书,很好,看到二十几章的地方,结果网站就登陆不上,写 ...
Linux C编程一站式学习 http://learn.akae.cn/ -
ljy520zhiyong:
这个网址进入不了呀
Linux C编程一站式学习 http://learn.akae.cn/ -
蜀山红日:
如果后台要向前台返回复杂数据该怎么办呢
实例解析java + jQuery + json工作过程(登录)
方法一
//jdk1.4.2.05
/** * @author cn * @param s 要截取的字符串 * @param length 要截取字符串的长度->是字节一个汉字2个字节 * return 返回length长度的字符串(含汉字) */ private static String getTitleToTen(String s, int length) throws Exception { byte[] bytes = s.getBytes("Unicode"); int n = 0; int i = 2; for (; i < bytes.length && n < length; i++){ if (i % 2 == 0){ n++; }else{ if (bytes[i] != 0){ n++; } } } /*if (i % 2 == 1){ if (bytes[i - 1] == 0) i = i - 1; else i = i + 1; }*/ //将截一半的汉字要保留 if (i % 2 == 1){ i = i + 1; } String eside = "................................................................."; byte[] byteEside = eside.getBytes("Unicode"); String title = ""; if (bytes[i-1] == 0){ title = new String(bytes, 0, i, "Unicode")+new String(byteEside,0,40,"Unicode"); }else{ title = new String(bytes, 0, i, "Unicode")+new String(byteEside,0,38,"Unicode"); } return title; }
//方法改进
/** * @author cn * @param s 要截取的字符串 * @param length 要截取字符串的长度->是字节一个汉字2个字节 * return 返回length长度的字符串(含汉字) */ private static String getTitleToTen(String s, int length) throws Exception { String title = ""; s = s.trim(); byte[] bytes = s.getBytes("Unicode"); int n = 0; int i = 2; int chineseNum = 0; int englishNum = 0; for (; i < bytes.length && n < length; i++){ if (i % 2 == 0){ n++; }else{ if (bytes[i] != 0){ n++; chineseNum++; }else{ englishNum++; } } } /*if (i % 2 == 1){ if (bytes[i - 1] == 0) i = i - 1; else i = i + 1; }*/ //将截一半的汉字要保留 if (i % 2 == 1){ i = i + 1; } //最后一个为非汉字则英文字符加一 if (bytes[i-1] == 0){ englishNum++; }else if (englishNum % 2 != 0){//如果英文字符mod 2 != 0 代表有奇数个英文字符,所以汉字个数加一 chineseNum++; } String eside = "................................................................."; String str = new String(bytes,0,i,"Unicode"); StringBuffer ssss = new StringBuffer(str); ssss.append(eside); byte[] byteTitle = ssss.toString().getBytes("Unicode"); int lll = (length*4-4)-2*chineseNum;//length截取字符串字节数(length*2)*(length*2)[length*2]代表参数s,和length转换成bytes[] 的字节数 title = new String(byteTitle,0,lll,"Unicode"); return title; }
//jdk1.6.0.06
/** * @author cn * @param s 要截取的字符串 * @param length 要截取字符串的长度->是字节一个汉字2个字节 * return 返回length长度的字符串(含汉字) */ public static String bSubstring(String s, int length) throws Exception { byte[] bytes = s.getBytes("Unicode"); int n = 0; // 表示当前的字节数 int i = 2; // 要截取的字节数,从第3个字节开始 for (; i < bytes.length && n < length; i++){ // 奇数位置,如3、5、7等,为UCS2编码中两个字节的第二个字节 if (i % 2 == 1){ n++; // 在UCS2第二个字节时n加1 } else{ // 当UCS2编码的第一个字节不等于0时,该UCS2字符为汉字,一个汉字算两个字节 if (bytes[i] != 0){ n++; } } } // 如果i为奇数时,处理成偶数 /*if (i % 2 == 1){ // 该UCS2字符是汉字时,去掉这个截一半的汉字 if (bytes[i - 1] != 0) i = i - 1; // 该UCS2字符是字母或数字,则保留该字符 else i = i + 1; }*/ //将截一半的汉字要保留 if (i % 2 == 1){ i = i + 1; } return new String(bytes, 0, i, "Unicode"); }
方法二
package proc; public class Tools { public Tools() { } /** * 字符串按字节截取 * @param str 原字符 * @param len 截取长度 * @return String * @author kinglong * @since 2006.07.20 */ public static String splitString(String str, int len) { return splitString(str, len, "......."); } /** * 字符串按字节截取 * @param str 原字符 * @param len 截取长度 * @param elide 省略符 * @return String * @author kinglong * @since 2006.07.20 */ public static String splitString(String str,int len,String elide) { if (str == null) { return ""; } byte[] strByte = str.getBytes(); int strLen = strByte.length; //int elideLen = (elide.trim().length() == 0) ? 0 : elide.getBytes().length; if (len >= strLen || len < 1) { return str; } /* if (len - elideLen > 0) { len = len - elideLen; } */ int count = 0; for (int i = 0; i < len; i++) { int value = (int) strByte[i]; if (value < 0) { count++; } } if (count % 2 != 0) { len = (len == 1) ? len + 1 : len - 1; } return new String(strByte, 0, len) + elide.trim(); } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Tools cs = new Tools(); //String s = "a加b等cc于c"; //String s = "a加b等cc于c"; String s ="aaas学位英语专区 学s位英语专区 学s位英语专区 学位英语专区"; try{ System.out.println(cs.splitString(s, 20)); }catch(Exception e){ e.printStackTrace(); } } }
方法三
/** * 取字符串的前toCount个字符 * * @param str 被处理字符串 * @param toCount 截取长度 * @param more 后缀字符串 * @version 2004.11.24 * @author zhulx * @return String */ public static String substring(String str, int toCount,String more)throws Exception{ int reInt = 0; String reStr = ""; if (str == null) return ""; char[] tempChar = str.toCharArray(); for (int kk = 0; (kk < tempChar.length && toCount > reInt); kk++) { String s1 = str.valueOf(tempChar[kk]); byte[] b = s1.getBytes(); reInt += b.length; reStr += tempChar[kk]; } if (toCount == reInt || (toCount == reInt - 1)) reStr += more; return reStr; }
发表评论
-
自定义js延时函数
2010-03-26 11:38 4475setTimeout不是真正意义上的延时函数,而且在表单提交后 ... -
ssh jar包配置
2009-11-27 11:31 2268本文中ssh指:struts2,srping2.5,hib ... -
每个项目中,你不得不知的11个Java第三方类库
2009-11-02 09:06 1071Java第三方library ecosystem是一个很广阔的 ... -
J2EE学习中一些值得研究的开源项目
2009-08-10 10:07 1145这篇文章写在我研究J2SE、J2EE近三年后。前3年 ... -
对JXL包的研究(java操作excel)
2009-06-25 07:44 1497对JXL包的研究(java操作excel) 在开源世界中,有两 ... -
java类中成员的装载顺序你知道吗
2009-04-03 08:18 973最近去参加了SCJP培训,相信对于绝大多数的JAVA工作者来说 ... -
java操作word文件
2009-03-31 15:41 1683一个jacob操作Word的例子 import java. ... -
Java操作PDF文件(iText)
2009-03-31 15:32 5851然jacob中也有关于PDF的方法,但是过于复杂。iText是 ... -
java对excel操作
2009-03-31 15:11 1439从Excel文件读取数据表 Java Excel API既可 ... -
JAVA解析XML的四种方法
2009-03-31 08:49 1390XML现在已经成为一种通 ... -
Java:集合类性能分析
2009-03-20 20:41 19241.Java 集合框架图 -集合接口:6个接口(短虚 ... -
在看commons-lang.jar包源码时候的一些发现及实践
2009-03-11 10:55 3589通常,我们在完成一个标准的JavaBean的时候,都需要同时完 ... -
解决大批量数据导出Excel产生内存溢出的方案(二)
2009-03-11 10:42 6293客户要求一次导出20w行数据,这就要求导出的文件必须带shee ... -
解决大批量数据导出Excel产生内存溢出的方案
2009-03-11 10:41 5391POI或者JXL在导出大量数据的时候,由于它们将每一个单元格生 ... -
java语言的反射机制1
2009-03-11 10:23 1087java语言的反射机制为是java语言所提供的一项特别吸引人的 ... -
Java获取各种常用时间方法(二)
2009-03-11 09:43 1022//获得本年最后一天的日期 * ... -
Java获取各种常用时间方法
2009-03-11 09:40 1181本人之前做的项目中积累常用的时间方法,贴出来与大家共享,如果哪 ... -
JavaSE6.0 Web Service学习笔记(二)
2009-03-11 09:30 7376JavaSE6.0下的Web Service 从JavaSE6 ... -
JavaSE6.0 Web Service学习笔记(一)
2009-03-11 09:24 1405Web Service概述 Web Service ... -
JDK5.0 Annotation学习笔记(一)
2009-03-11 09:22 935背景知识: 从JDK5开始提供名为Annotat ...
相关推荐
关于java按字节截取带有汉字的字符串的解法.不错的一个程序。我也是从高手那拿来的,觉得不错,传上来给感兴趣的朋友学习学习。
java中英文字符串截取
截取含有中英文的字符串,按字节进行截取,当出现汉字时不能截取半个汉字要把汉字补全。
delphi 实现截取字符串中中文+英文混合截取,当字符串中包含中文和英文支付时,有时候会将一个中文截取1半,出现乱码。该demo能很好的解决该问题
可以截取中英文字符串,也可以含有字符,里面有好几个方法 有按字符个数截取 有按字节数来截取不会存在乱码
实现一个按字节来截取字符串的方法,功能类似于string类的substring方法,String类是按字符截取 的,例如"中国abc".substring(1,3),将返回“国a”。这里 要求按字节截取,一个英文字符当一个字节,一个中文字符当两...
即使是10W条记录也能在1S没迅速完成你所得结果,中英混合的 如果想学习的朋友请关注下 欢迎大家下载
c#截取指定长度 中英文混合字符串 一个中文为两个字符计算,英文一个字符。
本文实例讲述了C#区分中英文按照指定长度截取字符串的.../// 截取文本,区分中英文字符,中文算两个长度,英文算一个长度 /// /// 待截取的字符串 /// 需计算长度的字符串 /// <returns>string public static string G
java 字符串截取类,兼容中英文及日韩文字格式
java字符串截取 - 中英文操作系统处理字符汉字
ASP中英文混合字符串的截取 ASP中英文混合字符串的截取
13年(实习期间)飞娱互动有限公司面试游戏开发客户端/服务器端时的面试题的第一道编程题,当时就差这题没做出来,回去后想出来的。 截取一定长度的字符串,保证不把汉字截断。
批量统计多字符串中[中英文标点数量],根据给定gbk/utf编码,计算出总长度。若总长度超过给定(最大)长度,则自动截取。使用场景:配合注解以及aop,解决录入数据库超长会报错的情况。
//不分中英文按字符串长度循环每个字符截取换行 这个是隔10个字符换行一次 String psStr="asdfghjklzxcvbnmzxcvbnmsdfghaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbb"; String aa=""; String bb=""; for (int i...
主要为大家详细介绍了java实现中英文混合字符的截取方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
java截取字符串-中英文; 中英文操作系统均可以正常运行; 希望能给大家帮助
便于英文和中文的区别,这个是专门截取字符串的,例如英文abcd截取4位,中文值截取2位!很简单!
本文实例讲述了C#实现中英文混合字符串截取.../// 截取中英文混合字符串 /// /// 字符文本 /// 截取长度 /// <param name=replacetxt>replacetxt替换的多余字符 /// <returns></returns> public string GetString(str
php 截取中应为字符串,就不必再用substr或者mb_substr //截取想这样的字符串 a李三 利用ASCII /** * * 中英混合的字符串截取 * @param unknown_type $sourcestr * @param unknown_type $cutlength */ ...