- 浏览: 563375 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (350)
- Sybase (30)
- SQL SERVER2005 (14)
- 数据库 (27)
- SSH框架 (27)
- WebService (21)
- 下载-软件收藏 (15)
- 随笔-日常使用 (9)
- Flex 相关 (13)
- Linux (11)
- Web (64)
- XML相关 (9)
- Socket相关 (1)
- Elipse (3)
- 统计报表 (11)
- 线程相关 (3)
- Java相关 (37)
- JAVASCRIPT (19)
- JAVA反射 (3)
- JSP标签 (3)
- 随笔-其他 (2)
- 随笔-设计模式 (3)
- 随笔-架构师相关 (1)
- 下载-源码 (7)
- 下载-帮助文档 (1)
- 下载-插件 (6)
- 技术-.NET (2)
- 技术-Excel VBA (8)
- 应用-地图相关 (2)
- 应用-GSM短信猫 (5)
- 应用-单点登录 (3)
- Android相关 (3)
最新评论
-
sucheng2016:
发现jconn4.jar 里面有getBlob(String) ...
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver -
sucheng2016:
java.lang.UnsupportedOperationE ...
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver -
ok123zxx:
没下文了吗
通过 Tomcat Advanced I/O 获得高性能的 Ajax tocmat6+CometProcessor -
q1345111:
大家这个问题 尚未完成方法 com.sybase.jdbc3. ...
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver -
bdk82924:
heshujing217187 写道问题同1楼一样,求解!换j ...
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver
转:http://blog.csdn.net/yanwudingkou/article/details/5461497
方法一
//jdk1.4.2.05
Java代码
- /**
- * @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;
- }
//方法改进
Java代码
- /**
- * @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
Java代码
- /**
- * @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");
- }
方法二
Java代码
- 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();
- }
- }
- }
方法三
Java代码
- /**
- * 取字符串的前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;
- }
发表评论
-
Jav解析soap的xml
2015-05-17 21:13 793解析xml import org.dom4j.Docume ... -
Json转换利器Gson
2013-12-13 08:59 520转: http://blog.csdn.net/lk_blog ... -
asm jar包冲突的问题和解决方法(转)
2013-11-03 01:48 1147asm jar包冲突的问题和解决方法 在用Spring+Hi ... -
Spring ehCache 示例
2013-04-28 15:46 775http://blog.chinaunix.net/uid-2 ... -
将json字符串转换为bean (json-lib)
2013-04-26 15:26 1007Json-lib可以将Java对象转成json格式的字符串,也 ... -
QPID学习
2013-03-09 14:13 4442最近在看QPID 首先看下QPID是什么,他是个消息队列,用 ... -
短网址的原理和实现
2013-01-22 15:36 15365微博上经常会看到类似 http://t.cn/Afafhe 这 ... -
JAVA实现栈(stack)与堆(heap)
2013-01-11 17:22 916Java实现 栈(stack)与堆(heap) 上次写过一 ... -
Tomcat7.0下实现的websocket 代码
2013-01-07 19:37 985测试环境: JDK1.6 Tomcat7.0.30 ... -
java IO写入文件效率——几种方法比较
2012-11-02 11:17 1075总结: 如果按字符和字节来分类,除方法1和2,其余都是按字符 ... -
Apache自带压力测试工具AB的使用方法
2012-09-18 11:26 1307使用例子: 1、打开dos界面,开始-》运行-》输入“cmd ... -
MyEclipse6.01注册码,Java源码
2012-07-02 16:12 1097不用为注册码犯愁了.. 下面是在网上搜索到的一段代码 ,分享给 ... -
ant解决OutOfMemoryError 或者Error starting modern compiler
2012-05-11 16:36 1383起因:在执行ant脚本的时候 ,报的错误是 Error st ... -
Java中使用Json 用到的jar包
2012-02-22 08:25 1373操作json开源的Jar包很多 ,那么多的jar选择哪个好呢 ... -
JsonUtils 类,将任意数据格式转换为Json格式
2012-02-21 09:12 1806package json; ... -
Java生成二维码或一维条形码(待续 未完)
2012-02-13 08:22 1760Java生成二维码或一维条形码(待续) 前段时间用了“ ... -
Java操作SVN(待续)
2012-02-02 08:31 1016一般大家都会直接使用snv客户端或者在eclipse中svn插 ... -
使用BeanUtils类简化request和resultset转换
2012-02-01 15:41 1085转:http://xdwangiflytek.iteye.co ... -
HttpClient 网络抓取
2012-01-20 10:08 1126利用 HttpClient 进行抓取 ... -
JAVA读写INI文件,亲测
2011-12-01 16:01 4060代码如下: import java.io.Buf ...
相关推荐
在Java编程语言中,处理带有汉字的字符串时,由于汉字占据多个字节,按照字节进行截取可能会导致汉字被不完整地分割,从而产生乱码。为了解决这个问题,我们需要理解Unicode编码以及如何在Java中正确处理多字节字符...
还可以使用正则表达式来实现更复杂的截取逻辑,例如只截取连续的英文字符或数字等。 ```csharp public static string CutStringByRegex(string inputString, int len) { var matches = Regex.Matches(inputString,...
总结来说,处理Delphi中的中文和英文混合字符串截取,关键在于理解Unicode字符串的特性,正确选择和使用字符串截取函数,并在必要时进行字节对齐和编码转换。通过这样的方式,我们可以确保在处理多语言文本时不会...
Java截取中英文混合字符串的方法 Java截取中英文混合字符串的方法是指在Java语言中截取混合了...Java截取中英文混合字符串的方法需要考虑到编码方式和汉字占用字节长度的问题,并使用特殊的方法来保证汉字不被截半个。
### 高效中英文字符串截取方法 #### 知识点概述 本文将详细介绍一种用于高效截取中英文混合字符串的方法。该方法适用于处理大量数据(例如10万条记录),能够在极短的时间内(例如1秒)完成所需的操作。这种方法...
### Java中截取带汉字的字符串 在Java编程语言中,处理包含中文字符的字符串时,经常遇到的一个问题是如何正确地截取这些字符串。如果直接按照字节(byte)来进行分割,很容易导致中文字符被截断一半,从而形成乱码。...
### Java中英文字符串截取的关键点 1. **字符编码的影响**:中文字符在不同的编码方式下占用的字节数不同。例如,在UTF-8编码中,中文字符通常占用3个字节,而在GBK编码中,则可能占用2或4个字节。因此,在计算字符...
然而,当处理包含中文字符的字符串时,简单的按字符截取可能会出现问题,因为中文字符通常占用两个字节,而英文字符只占用一个字节。为了实现更精确的截取,可以采用如下的方法: ```java private String str; ...
这个压缩包内包含的可能是Java代码示例(如csdn-demo),用于批量处理字符串,统计其中的中英文标点符号的数量,并根据指定的字符编码(GBK或UTF)来计算字符串的总长度。如果字符串的总长度超过预设的最大长度,...
本文将详细介绍如何在ASP中正确地截取中英文混合的字符串,并提供三个相关的函数:`CnSubString()`, `CnLen()` 和 `CnCutString()`。 首先,`CnSubString()`函数用于截取包含中文的字符串。这个函数接受三个参数:`...
题目中提到“截取前5个字节, 字符串应该为‘java程’”,意味着我们需要理解,在UTF-8编码格式下,英文字符通常占用1个字节,而中文字符则占用3个字节。因此,实际上,从“java程序教程”中截取前5个字节,得到的...
截取含有中英文的字符串,按字节进行截取,当出现汉字时不能截取半个汉字要把汉字补全。
根据给定的文件信息,我们可以总结出以下关于C#中的字符串截取的相关知识点: ### C#字符串截取方法概述 在C#编程语言中,字符串处理是非常常见的需求之一,尤其是在Web开发、桌面应用开发以及数据处理等领域。...
### C# 截取指定长度的中英文混合字符串方法解析 在C#中处理文本时,经常需要对字符串进行截取操作。对于包含中文字符的字符串来说,由于一个中文字符通常占据两个字节的位置(在某些编码下),因此在进行长度判断...
这种方法主要用于解决在 Java 中截取字符串时遇到的问题,即在截取中英文混合字符串时如何避免汉字被截半个。 在 Java 中,字符串是以 Unicode 编码方式存储的,每个字符占用 2 个字节。因此,在截取字符串时需要...
根据给定文件的信息,我们将深入探讨Java中字符串截取的原理、方法以及在中英文操作系统下的特殊处理。 ### Java字符串截取 #### 原理与实现 在Java中,字符串本质上是一个不可变的字符序列,由`char`类型的数组...
这个方法用来处理java中可能有一些特别的需要,一大串中英文混合,需要中间截断或是中英中间添加一些特别的标识,调用这个方法 第一个参数是要处理的字符串,第二个是要在中英字符中间插入的字符。调用就可以得到想...
实现一个按字节来截取字符串的方法,功能类似于string类的substring方法,String类是按字符截取 的,例如"中国abc".substring(1,3),将返回“国a”。这里 要求按字节截取,一个英文字符当一个字节,一个中文字符当两...
可以截取中英文字符串,也可以含有字符,里面有好几个方法 有按字符个数截取 有按字节数来截取不会存在乱码
本文将深入探讨一种按字节截取字符串的方法,并通过分析一个具体的Java代码示例来解释其实现原理。 #### 核心概念:Unicode与字节 在讨论字符串按字节截取之前,我们首先需要理解几个基础概念。现代计算机系统中,...