`
rjgcs123
  • 浏览: 13966 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

按字节截取字符串的简单方法

阅读更多
网络上的按字节截取字符串大部分用如下的 for 循环处理:
char[] tmpChar = src.toCharArray();
				
				for(int i = 0;i<tmpChar.length && reInt < size;i++){
					String s1 = String.valueOf(tmpChar[i]);
					byte[] b = s1.getBytes();
					reInt += b.length;
					reStr += tmpChar[i];
				}

但是我突然想到一个更简单的办法,贴出来给大家分享一下

public String subString(String src,int size){
    if(src == null || src.equals("") || src.length()<=size){
        return src;
    }
    String result = new String(src.getBytes(),0,size);
		
    if(!src.startsWith(result)){
        result = new String(src.getBytes(),0,size-1);
    }
		
    return result;
}


注意:本文章绝对原创,属字节截取字符串史无前列的方法,版权所有,转载请注明出处。
分享到:
评论
2 楼 rjgcs123 2009-06-18  
你试过 50万次吗,看下面这段
public class Text {
	 public static void main(String args[]){   
         String src = "Saito";   
         int size =3;   
        
         long timeNew = System.currentTimeMillis() ;   
         for(int k=0;k<500000;k++){   
        	 subString(src,size);   
         }   
         long timeNewTest = System.currentTimeMillis() ;   
         System.out.println("新的效率:"+(timeNewTest -timeNew));   
            
         long timeOld = System.currentTimeMillis() ;   
         for(int i=0;i<500000;i++){   
        	 subStringOld(src,size);   
         }   
         long timeOldTest = System.currentTimeMillis() ;   
         System.out.println("原理的效率:"+(timeOldTest-timeOld));   
     }   

	public static String subStringOld(String src,int size){
		char[] tmpChar = src.toCharArray();   
		String reStr = "";
		int len = 0;
		for(int i = 0;i<tmpChar.length && len < size;i++){   
            String s1 = String.valueOf(tmpChar[i]);   
            byte[] b = s1.getBytes();   
            len += b.length;  
            
            if(len < size){
            	reStr += tmpChar[i];
            }
        }  
		return reStr;
	}
	
	public static String subString(String src,int size){
		String result = new String(src.getBytes(),0,size);
		
		if(!src.startsWith(result)){
			result = new String(src.getBytes(),0,size-1);
		}
		
		return result;
	}
}
1 楼 Saito 2009-06-18  
public class SplitStr{
	
			public String subString(String src,int size){
			String result = new String(src.getBytes(),0,size);
			
			if(!src.startsWith(result)){
				result = new String(src.getBytes(),0,size-1);
			}
			
			return result;
		}
		
		public static void main(String args[]){
				String src = "Saito";
				int size =3;
				int reInt = 0;
				String reStr = "";
			
				SplitStr ss = new SplitStr();
			        long timeNew = System.currentTimeMillis() ;
				for(int k=0;k<10000;k++){
				char[] tmpChar = src.toCharArray();
				for(int i = 0;i<tmpChar.length && reInt < size;i++){
					String s1 = String.valueOf(tmpChar[i]);
					byte[] b = s1.getBytes();
					reInt += b.length;
					reStr += tmpChar[i];
				}
				}
				long timeNewTest = System.currentTimeMillis() ;
				System.out.println(timeNewTest -timeNew);
				
				long timeOld = System.currentTimeMillis() ;
				for(int i=0;i<10000;i++){
					ss.subString(src,size);
				}
				long timeOldTest = System.currentTimeMillis() ;
				System.out.println(timeOldTest-timeOld);
			}
	}

测试结果:
>java SplitStr
4
68
>Exit code: 1
>java SplitStr
4
67
>Exit code: 1
>java SplitStr
4
70
>Exit code: 1
>java SplitStr
6
69
>Exit code: 1
>java SplitStr
4
67
>Exit code: 1


你这个跟原先的代码性能差据差不多在10~20倍之间。 原因应该你自己知道吧。 

    所以版权问题还是放心好啦。。安心啦。

相关推荐

    asp.net截取字符串方法

    asp.net截取字符串方法 使用字节精确计算 计算空格 直接复制使用 简单

    标题过长使用javascript按字节截取字符串

    做为一个前端开发人员在网页展示中经常会碰到,标题过长,需要截取字符串,用CSS的实现的话各种兼容问题,各种坑。 让后台程序截一下,又各种推托,让后台按字节截一下更是和要了后台老命一样,最后可能只会安字符...

    中文字符串截取的js函数代码

    为了解决这个问题昨天写了根据字节数截取字符串的函数。具体使用很简单,跟String.subString(start, end)一样使用就可。比如:var str = “诶必塞第衣爱抚即”; var str1 = str.subCHStr(2, 2); var str2 = str....

    php简单实现多字节字符串翻转的方法

    本文实例讲述了php简单实现多字节字符串翻转的方法。分享给大家供大家参考。具体实现方法如下: &lt;?php function mb_strev ($string, $encoding = null) { if ($encoding === null) { $encoding = mb_detect_...

    js截取固定长度的中英文字符的简单实例

    js虽然提供了计算字符串所占字节数的函数,但是却不能正确计算汉字所占的字节数,... 代码如下://js截取字符串,中英文都能用//如果给定的字符串大于指定长度,截取指定长度返回,否者返回源字符串。function cutstr(st

    Python计算字符宽度的方法

    最近在用python写一个CLI小程序,其中涉及到计算字符宽度,目标是以友好的方式将一个长字符串截取为等宽的片段。 对于unicode字符,python的len函数可以准确的计算其中所包含的字符个数,但是个数并不代表宽度,如:...

    简易的VB短信发送代码,支持PDU编码,AT测试终端

     那么,在这种情况下需要查找符合条件的字符串,从中截取出响应字符串  在这里,如果命令一时没有全部返回,因为串口数据不一定会得到全部数据  所以,设置一个静态的Bool变量blIsWaiting,来指示是否结束了...

    c# 加密和解密相关代码

    string类的ToCharArray 方法用来将字符串中的字符复制到Unicode 字符数组,该方法有两种重载形式,本 实例中用到的它的重载形式如下: public char[] ToCharArray() 参数说明 返回值:元素为此字符串的各字符的...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    varchar2 1~4000字节 可变长度字符串,与CHAR类型相比,使用VARCHAR2可以节省磁盘空间,但查询效率没有char类型高 数值类型 Number(m,n) m(1~38) n(-84~127) 可以存储正数、负数、零、定点数和精度为38位的浮点数...

    java初学者必看

    5.4.2 字符串操作方法 5.4.3 添加append() 5.4.4 插入insert() 5.5 实例:字符串应用 5.6 本章习题 第6章 数组 6.1 一维数组 6.1.1 数组的概念 6.1.2 一维数组的声明 6.1.3 一维数组的初始化 6.1.4 一维...

    java面试宝典

    215、写一个方法,实现字符串的反转,如:输入abc,输出cba 53 216、数据类型之间的转换 53 217、如何取得年月日,小时分秒 53 218、如何取得从1970年到现在的毫秒数 53 219、如何格式化日期 53 220、文件和目录(I/...

    最新Java面试宝典pdf版

    3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...

    Java面试笔试资料大全

    3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...

    Java面试宝典2010版

    3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...

    千方百计笔试题大全

    215、写一个方法,实现字符串的反转,如:输入abc,输出cba 53 216、数据类型之间的转换 53 217、如何取得年月日,小时分秒 53 218、如何取得从1970年到现在的毫秒数 53 219、如何格式化日期 53 220、文件和目录(I/...

    Java面试宝典-经典

    3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...

    JAVA面试宝典2010

    3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...

    java面试题大全(2012版)

    3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...

    Java面试宝典2012版

    3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...

    java面试宝典2012

    3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...

Global site tag (gtag.js) - Google Analytics