- 浏览: 551155 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (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
用Java实现按字节长度截取中英文数字字符串的方法总结 .
- 博客分类:
- Java相关
转: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 747解析xml import org.dom4j.Docume ... -
Json转换利器Gson
2013-12-13 08:59 489转: http://blog.csdn.net/lk_blog ... -
asm jar包冲突的问题和解决方法(转)
2013-11-03 01:48 1075asm jar包冲突的问题和解决方法 在用Spring+Hi ... -
Spring ehCache 示例
2013-04-28 15:46 748http://blog.chinaunix.net/uid-2 ... -
将json字符串转换为bean (json-lib)
2013-04-26 15:26 972Json-lib可以将Java对象转成json格式的字符串,也 ... -
QPID学习
2013-03-09 14:13 4404最近在看QPID 首先看下QPID是什么,他是个消息队列,用 ... -
短网址的原理和实现
2013-01-22 15:36 15303微博上经常会看到类似 http://t.cn/Afafhe 这 ... -
JAVA实现栈(stack)与堆(heap)
2013-01-11 17:22 888Java实现 栈(stack)与堆(heap) 上次写过一 ... -
Tomcat7.0下实现的websocket 代码
2013-01-07 19:37 937测试环境: JDK1.6 Tomcat7.0.30 ... -
java IO写入文件效率——几种方法比较
2012-11-02 11:17 1051总结: 如果按字符和字节来分类,除方法1和2,其余都是按字符 ... -
Apache自带压力测试工具AB的使用方法
2012-09-18 11:26 1275使用例子: 1、打开dos界面,开始-》运行-》输入“cmd ... -
MyEclipse6.01注册码,Java源码
2012-07-02 16:12 1067不用为注册码犯愁了.. 下面是在网上搜索到的一段代码 ,分享给 ... -
ant解决OutOfMemoryError 或者Error starting modern compiler
2012-05-11 16:36 1340起因:在执行ant脚本的时候 ,报的错误是 Error st ... -
Java中使用Json 用到的jar包
2012-02-22 08:25 1339操作json开源的Jar包很多 ,那么多的jar选择哪个好呢 ... -
JsonUtils 类,将任意数据格式转换为Json格式
2012-02-21 09:12 1781package json; ... -
Java生成二维码或一维条形码(待续 未完)
2012-02-13 08:22 1719Java生成二维码或一维条形码(待续) 前段时间用了“ ... -
Java操作SVN(待续)
2012-02-02 08:31 980一般大家都会直接使用snv客户端或者在eclipse中svn插 ... -
使用BeanUtils类简化request和resultset转换
2012-02-01 15:41 1057转:http://xdwangiflytek.iteye.co ... -
HttpClient 网络抓取
2012-01-20 10:08 1095利用 HttpClient 进行抓取 ... -
JAVA读写INI文件,亲测
2011-12-01 16:01 4021代码如下: import java.io.Buf ...
相关推荐
关于java按字节截取带有汉字的字符串的解法.不错的一个程序。我也是从高手那拿来的,觉得不错,传上来给感兴趣的朋友学习学习。
java中英文字符串截取
截取含有中英文的字符串,按字节进行截取,当出现汉字时不能截取半个汉字要把汉字补全。
delphi 实现截取字符串中中文+英文混合截取,当字符串中包含中文和英文支付时,有时候会将一个中文截取1半,出现乱码。该demo能很好的解决该问题
实现一个按字节来截取字符串的方法,功能类似于string类的substring方法,String类是按字符截取 的,例如"中国abc".substring(1,3),将返回“国a”。这里 要求按字节截取,一个英文字符当一个字节,一个中文字符当两...
可以截取中英文字符串,也可以含有字符,里面有好几个方法 有按字符个数截取 有按字节数来截取不会存在乱码
即使是10W条记录也能在1S没迅速完成你所得结果,中英混合的 如果想学习的朋友请关注下 欢迎大家下载
批量统计多字符串中[中英文标点数量],根据给定gbk/utf编码,计算出总长度。若总长度超过给定(最大)长度,则自动截取。使用场景:配合注解以及aop,解决录入数据库超长会报错的情况。
c#截取指定长度 中英文混合字符串 一个中文为两个字符计算,英文一个字符。
java 字符串截取类,兼容中英文及日韩文字格式
本文实例讲述了C#区分中英文按照指定长度截取字符串的.../// 截取文本,区分中英文字符,中文算两个长度,英文算一个长度 /// /// 待截取的字符串 /// 需计算长度的字符串 /// <returns>string public static string G
java字符串截取 - 中英文操作系统处理字符汉字
ASP中英文混合字符串的截取 ASP中英文混合字符串的截取
13年(实习期间)飞娱互动有限公司面试游戏开发客户端/服务器端时的面试题的第一道编程题,当时就差这题没做出来,回去后想出来的。 截取一定长度的字符串,保证不把汉字截断。
//不分中英文按字符串长度循环每个字符截取换行 这个是隔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 */ ...