- 浏览: 285731 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 4547setTimeout不是真正意义上的延时函数,而且在表单提交后 ... -
ssh jar包配置
2009-11-27 11:31 2314本文中ssh指:struts2,srping2.5,hib ... -
每个项目中,你不得不知的11个Java第三方类库
2009-11-02 09:06 1119Java第三方library ecosystem是一个很广阔的 ... -
J2EE学习中一些值得研究的开源项目
2009-08-10 10:07 1175这篇文章写在我研究J2SE、J2EE近三年后。前3年 ... -
对JXL包的研究(java操作excel)
2009-06-25 07:44 1544对JXL包的研究(java操作excel) 在开源世界中,有两 ... -
java类中成员的装载顺序你知道吗
2009-04-03 08:18 1006最近去参加了SCJP培训,相信对于绝大多数的JAVA工作者来说 ... -
java操作word文件
2009-03-31 15:41 1732一个jacob操作Word的例子 import java. ... -
Java操作PDF文件(iText)
2009-03-31 15:32 5903然jacob中也有关于PDF的方法,但是过于复杂。iText是 ... -
java对excel操作
2009-03-31 15:11 1475从Excel文件读取数据表 Java Excel API既可 ... -
JAVA解析XML的四种方法
2009-03-31 08:49 1418XML现在已经成为一种通 ... -
Java:集合类性能分析
2009-03-20 20:41 19661.Java 集合框架图 -集合接口:6个接口(短虚 ... -
在看commons-lang.jar包源码时候的一些发现及实践
2009-03-11 10:55 3633通常,我们在完成一个标准的JavaBean的时候,都需要同时完 ... -
解决大批量数据导出Excel产生内存溢出的方案(二)
2009-03-11 10:42 6335客户要求一次导出20w行数据,这就要求导出的文件必须带shee ... -
解决大批量数据导出Excel产生内存溢出的方案
2009-03-11 10:41 5421POI或者JXL在导出大量数据的时候,由于它们将每一个单元格生 ... -
java语言的反射机制1
2009-03-11 10:23 1129java语言的反射机制为是java语言所提供的一项特别吸引人的 ... -
Java获取各种常用时间方法(二)
2009-03-11 09:43 1071//获得本年最后一天的日期 * ... -
Java获取各种常用时间方法
2009-03-11 09:40 1219本人之前做的项目中积累常用的时间方法,贴出来与大家共享,如果哪 ... -
JavaSE6.0 Web Service学习笔记(二)
2009-03-11 09:30 7411JavaSE6.0下的Web Service 从JavaSE6 ... -
JavaSE6.0 Web Service学习笔记(一)
2009-03-11 09:24 1442Web Service概述 Web Service ... -
JDK5.0 Annotation学习笔记(一)
2009-03-11 09:22 972背景知识: 从JDK5开始提供名为Annotat ...
相关推荐
总结来说,处理Delphi中的中文和英文混合字符串截取,关键在于理解Unicode字符串的特性,正确选择和使用字符串截取函数,并在必要时进行字节对齐和编码转换。通过这样的方式,我们可以确保在处理多语言文本时不会...
在Java编程语言中,处理带有汉字的字符串时,由于汉字占据多个字节,按照字节进行截取可能会导致汉字被不完整地分割,从而产生乱码。为了解决这个问题,我们需要理解Unicode编码以及如何在Java中正确处理多字节字符...
还可以使用正则表达式来实现更复杂的截取逻辑,例如只截取连续的英文字符或数字等。 ```csharp public static string CutStringByRegex(string inputString, int len) { var matches = Regex.Matches(inputString,...
总结来说,Java截取中英文混合字符串的方法需要综合考虑编码方式和汉字占用字节长度的问题,并且需要采取适当的技术手段来确保汉字不会被截断。通过自定义截取方法,并在截取过程中正确地使用编码方式,我们可以有效...
### 高效中英文字符串截取方法 #### 知识点概述 本文将详细介绍一种用于高效截取中英文混合字符串的方法。该方法适用于处理大量数据(例如10万条记录),能够在极短的时间内(例如1秒)完成所需的操作。这种方法...
### Java中英文字符串截取的关键点 1. **字符编码的影响**:中文字符在不同的编码方式下占用的字节数不同。例如,在UTF-8编码中,中文字符通常占用3个字节,而在GBK编码中,则可能占用2或4个字节。因此,在计算字符...
### Java中截取带汉字的字符串 在Java编程语言中,处理包含中文字符的字符串时,经常遇到的一个问题是如何正确地截取这些字符串。如果直接按照字节(byte)来进行分割,很容易导致中文字符被截断一半,从而形成乱码。...
本文将详细介绍如何在ASP中正确地截取中英文混合的字符串,并提供三个相关的函数:`CnSubString()`, `CnLen()` 和 `CnCutString()`。 首先,`CnSubString()`函数用于截取包含中文的字符串。这个函数接受三个参数:`...
题目中提到“截取前5个字节, 字符串应该为‘java程’”,意味着我们需要理解,在UTF-8编码格式下,英文字符通常占用1个字节,而中文字符则占用3个字节。因此,实际上,从“java程序教程”中截取前5个字节,得到的...
截取含有中英文的字符串,按字节进行截取,当出现汉字时不能截取半个汉字要把汉字补全。
可以截取中英文字符串,也可以含有字符,里面有好几个方法 有按字符个数截取 有按字节数来截取不会存在乱码
这个方法用来处理java中可能有一些特别的需要,一大串中英文混合,需要中间截断或是中英中间添加一些特别的标识,调用这个方法 第一个参数是要处理的字符串,第二个是要在中英字符中间插入的字符。调用就可以得到想...
根据给定文件的信息,我们将深入探讨Java中字符串截取的原理、方法以及在中英文操作系统下的特殊处理。 ### Java字符串截取 #### 原理与实现 在Java中,字符串本质上是一个不可变的字符序列,由`char`类型的数组...
这个压缩包内包含的可能是Java代码示例(如csdn-demo),用于批量处理字符串,统计其中的中英文标点符号的数量,并根据指定的字符编码(GBK或UTF)来计算字符串的总长度。如果字符串的总长度超过预设的最大长度,...
这种方法主要用于解决在 Java 中截取字符串时遇到的问题,即在截取中英文混合字符串时如何避免汉字被截半个。 在 Java 中,字符串是以 Unicode 编码方式存储的,每个字符占用 2 个字节。因此,在截取字符串时需要...
### C# 截取指定长度的中英文混合字符串方法解析 在C#中处理文本时,经常需要对字符串进行截取操作。对于包含中文字符的字符串来说,由于一个中文字符通常占据两个字节的位置(在某些编码下),因此在进行长度判断...
根据给定的文件信息,我们可以总结出以下关于C#中的字符串截取的相关知识点: ### C#字符串截取方法概述 在C#编程语言中,字符串处理是非常常见的需求之一,尤其是在Web开发、桌面应用开发以及数据处理等领域。...
实现一个按字节来截取字符串的方法,功能类似于string类的substring方法,String类是按字符截取 的,例如"中国abc".substring(1,3),将返回“国a”。这里 要求按字节截取,一个英文字符当一个字节,一个中文字符当两...
本文将深入探讨一种按字节截取字符串的方法,并通过分析一个具体的Java代码示例来解释其实现原理。 #### 核心概念:Unicode与字节 在讨论字符串按字节截取之前,我们首先需要理解几个基础概念。现代计算机系统中,...
题目中的问题聚焦于如何正确地截取一个中英混合的字符串,确保在截取过程中不会将汉字字符截断。这个问题涉及到字符编码、字符串处理以及对Unicode的理解。下面将详细解释相关知识点。 首先,我们要理解在C++中处理...