`
rjgcs123
  • 浏览: 14231 次
  • 性别: 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倍之间。 原因应该你自己知道吧。 

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

相关推荐

    字符串截取(按字节)

    本文将深入探讨一种按字节截取字符串的方法,并通过分析一个具体的Java代码示例来解释其实现原理。 #### 核心概念:Unicode与字节 在讨论字符串按字节截取之前,我们首先需要理解几个基础概念。现代计算机系统中,...

    关于java按字节截取带有汉字的字符串的解法

    Java中的`String`类提供了多种截取字符串的方法,如`substring()`、`subSequence()`等,但它们都是基于字符(char)而不是字节的。因此,如果我们需要按照字节截取,需要自定义方法来处理。以下是一个简单的示例,...

    根据字节数截取字符串

    因此,如果我们想要根据字节数截取字符串,我们不能简单地用`substring()`,而是需要先计算字符串的字节数,然后根据这个字节数来定位截取的位置。 下面是一种可能的实现方式: 1. 使用`getBytes()`方法转换字符串...

    Go语言按字节截取字符串的方法

    因此,当我们说“按字节截取字符串”时,需要注意的是,由于UTF-8编码的特性,一个字符可能由一个或多个字节组成。这就意味着简单的按字节数截取可能会导致截取到的字符串包含不完整的多字节字符,从而引发乱码问题...

    asp.net截取字符串方法

    ### ASP.NET 截取字符串方法详解 在ASP.NET开发中,有时我们需要对字符串进行截取操作,特别是当涉及到多字节字符(如中文)时,简单的字符串截取可能会导致乱码问题。本文将详细介绍一种使用字节精确计算的ASP.NET...

    超实用c#按字节截取长度(原创)

    根据给定文件的信息,本文将深入探讨如何在C#中实现一种高效的按字节截取字符串的方法,尤其针对包含单字节与双字节混合字符的情况。这种方法特别适用于处理中文等双字节字符与英文等单字节字符混合的情况。 ### 一...

    C#字符串截取固定长度的方法

    在C#编程语言中,经常需要处理字符串操作,其中一个常见的需求就是根据特定的长度来截取字符串。本文将详细介绍如何使用C#实现字符串的固定长度截取,并深入探讨背后的原理和技术细节。 #### 方法一:使用Substring...

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

    var str = "javascript高效按字节截取字符串方法getBlengthjavascript高效按字节截取字符串方法getBlength"; str = str.replace(/./g,str).replace(/./g,str); console.log("创造的字符串长度为:", str.length); ``...

    Java精确截取字符串.doc

    这个`SplitString`类的`splitIt`方法会根据给定的字节数截取字符串,确保不会截断汉字。当输入的字节数大于1时,检查最后一个字节是否为汉字的第二个字节;如果输入的字节数为1,需要检查是否为汉字的首个字节。这样...

    ASP截取固定长度字符串

    因此,在截取字符串时需要注意字符的字节数量,以避免截取到半个汉字。 #### 二、自定义函数StrByteLeft()详解 为了更好地解决中文字符串截取问题,可以自定义一个函数`StrByteLeft()`来实现更精确的截取。 1. **...

    Java精确截取字符串.pdf

    总的来说,Java中精确截取字符串涉及到字符编码、字节长度计算等多个方面。对于不同的场景,需要选择合适的方法,确保截取后的字符串既能满足长度要求,又能正确显示其中的文本内容。在实际开发中,可以根据项目需求...

    PHP中如何截取中文字符串

    因此,简单的基于字节的截取方法可能会导致截取到的中文字符不完整,从而显示乱码。 1. **使用mbstring扩展** PHP提供了一个强大的多字节字符串处理扩展——mbstring。它支持多种字符编码,包括UTF-8。我们可以...

    字符串 截取

    这意味着如果我们直接按字节来截取字符串,可能会截取到某个汉字的中间部分,从而导致乱码。 #### 2. 截取算法设计 为了实现上述功能,我们需要设计一种算法,使得无论我们指定截取多少字节,都不会截取到半个汉字...

    JavaScript截取中文字符串

    特别是在处理包含多种字符集(如英文与中文)的字符串时,考虑到不同字符编码长度的差异性,简单地按照字符数量进行截取可能会导致显示效果不佳或出现乱码等问题。本文将详细介绍一个专门用于处理中文字符串截取的...

    PHP截取字符串,生成文章摘要

    在PHP中,截取字符串并生成文章摘要是常见的任务,特别是在构建内容管理系统或者博客平台时。这个过程涉及到字符串处理和文本分析技术。下面我们将详细探讨如何使用PHP来实现这一功能。 首先,PHP提供了多种内置...

    PHP 不区分中英文截取utf8字符串

    PHP中,`substr()`函数是用于截取字符串的常用方法,但对UTF-8编码的字符串处理并不理想。要实现不区分中英文的截取,我们需要使用`mb_substr()`函数,它是PHP的多字节字符串处理函数,能处理各种字符编码,包括UTF-...

    文本文件、EXCEL相互导入、导出,包含了datagridview、datatable的相互转换,按字节截取指定数目的字符串

    本文将详细探讨如何实现文本文件与Excel之间的互换操作,以及如何利用DataGridView和DataTable进行数据的交互转换,并介绍如何按字节截取指定数目的字符串。 首先,文本文件(如.txt格式)是最基本的数据存储形式,...

    C++中英混合字符串截取

    因此,截取字符串时,我们不能简单地按照字节数来截断,否则可能会破坏汉字的完整性。 解决这个问题的方法是使用`std::wstring`,它能处理宽字符,适合处理Unicode编码的字符串。在C++11及更高版本中,可以使用`std...

Global site tag (gtag.js) - Google Analytics