`
H小阿飞
  • 浏览: 278541 次
  • 性别: Icon_minigender_1
  • 来自: 南通
社区版块
存档分类
最新评论

根据字节数截取字符串

 
阅读更多

 

在网上看到一个考试题,做了试试看的,发现网上给的很多答案并不完全标准,不完全符合题目要求。题目如下:

 

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

 

package main;
/** 
 * @author H小阿飞
 */
public class SplitChar {
/**
       在UTF-8字符集中一个中文字
      占2个字节的:0个
      占3个字节的:基本等同于GBK,含21000多个汉字
      占4个字节的:中日韩超大字符集里面的汉字,有5万多个
 */	
	public void splitIt(String str,int bytes){
		char[] getChar = str.toCharArray();   //字符串以字符数组的形式存储
		int charLength = getChar.length;
		System.out.println("字符数组的长度:"+charLength);
		int k = 0;
		String reStr = "";
		for(int i=0;i<charLength&&bytes>k;i++){  //bytes>k 用来限制循环的条件。形象点讲:bytes相当于一个剪切点,k从字符串数组起点游动寻找此bytes点。
			String s1 = String.valueOf(getChar[i]);	 //获取字符串数组中的字符并转换成String型
			byte[] getBytes = s1.getBytes();     //字符串数组中的字符串以字节数组的形式存储	
			if(getBytes.length==3){           //为了应付题目,把一个汉字当做2个字节
				k += getBytes.length-1;
			}else{
				k += getBytes.length;
			}		
			if(k<=bytes){      //处理如:"a我",2的情况,只输出"a",而不是"a我"
				reStr += getChar[i];
			}					
		}	
		System.out.println("截取后所需的字符串:"+reStr);
	}

	public static void main(String[] args){
		String input = " a我b是c一d个e中f国g人";
		String number = "7";
		int num = Integer.valueOf(number);
		SplitChar splitChar = new SplitChar();
		splitChar.splitIt(input,num);
	}
}

 

 

注:题目本身并不完善,因为它认为一个中文字是两个字节的,而且我们平时也都是认为一个中文汉字是两个字节,一个英文字母是一个字节,但在UTF-8字符集下,中文汉字其实是3个字节,这也是我做了这条题目后才发现的。

对此我有个疑问:那在何种情况下一个中文字是两个字节呢?

应题目要求,我对中文字节数减了1,完全按照题目意思去写的代码。

 

下面的附近是对此进行了扩展,多了一个按字符截取字符串的功能

分享到:
评论
1 楼 liuhailt 2012-08-07  
应该用工厂模式根据字符集的不同做不同处理吧。。。

相关推荐

    C# 按照字节长度截取字符串

    在C#编程中,有时我们需要根据字节长度来截取字符串,这可能是因为要处理不同编码格式的数据,或者为了适应特定的传输限制。本篇将详细介绍如何在C#中按照字节长度截取字符串,并结合正则表达式进行操作。 首先,...

    字符串按照指定的字节数来截取

    了解这些方法后,我们就可以灵活地根据需求截取字符串中的特定字节数部分了。但要注意,字节截取可能会涉及到字符编码问题,因此在实际操作时要特别留意编码格式,避免出现乱码或者截取不完整的情况。

    C#实现根据字节数截取字符串并加上省略号的方法

    在C#编程中,有时我们需要根据特定的字节数来截取字符串,并在截取后添加省略号以便表示被省略的内容。本篇将详细讲解如何实现这一功能。 首先,我们要理解字符串在不同的编码环境下可能会占用不同数量的字节。例如...

    C#(.net)中按字节数截取字符串最后出现乱码问题的解决

    最近需要用到按字节数截取字符串。在网上找了很多方法。 Encoding.Default.GetString采用的Default Encoding.UTF8.GetBytes采用的是utf-8编码。这样当然是乱码。尤其出现中文时候。 对这类数据处理当然要用统一的...

    asp.net c# String类添加按字节截取字符串的扩展方法

    在ASP.NET C#开发环境中,处理字符串是一项常见且重要的任务,尤其是在需要对字符串进行精确控制的情况下,如按字节截取字符串。本文将详细介绍如何为C#中的`String`类添加一个扩展方法,该方法允许我们按照字节而非...

    实现一个按字节来截取字符串的方法,功能类似于string类的substring方法,

    实现一个按字节来截取字符串的方法,功能类似于string类的substring方法,String类是按字符截取 的,例如"中国abc".substring(1,3),将返回“国a”。这里 要求按字节截取,一个英文字符当一个字节,一个中文字符当两...

    JAVA如何按字节截取字符串

    "JAVA按照字节截取字符串" JAVA按照字节截取字符串是Java编程语言中的一项重要技术,通过本文,我们将详细介绍如何使用Java语言按照字节截取字符串。 首先,我们需要了解什么是字节截取。在计算机科学中,字节是...

    按字节长度截取字符串(支持截取带HTML代码样式的字符串)

    首先,理解为什么需要按照字节长度而不是字符长度截取字符串。在处理非ASCII字符(如中文、日文等)时,一个字符可能占用多个字节。如果单纯按字符长度截取,可能会导致截取到半字符,从而破坏字符串的读取。因此,...

    java编写一个截取字符串的函数,输入为一个字符串和字节数.docx

    在 `main` 方法中,我们创建了一个 `SplitString` 对象,并调用其 `SplitIt` 方法来截取字符串。 总结 本例中,我们实现了一个 Java 字符串截取函数,该函数可以截取指定字节的字符串,并保证汉字不被截半个。该...

    字符串截取(按字节)

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

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

    这就意味着当我们按照字节长度截取字符串时,可能会将一个完整的汉字分割成两部分,从而导致乱码。 Java中的`String`类提供了多种截取字符串的方法,如`substring()`、`subSequence()`等,但它们都是基于字符(char...

    按byte截取字符串

    在某些场景下,我们可能需要按照特定的字节数来截取字符串,比如在网络传输、数据解析或编码转换时。本篇文章将详细探讨“按byte截取字符串”这一技术点,并通过两个Java文件——SliceByByteTest.java和SliceByByte....

    asp.net截取字符串方法

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

    TIA博途-字符转换为字符串以及截取字符串有效字符的具体方法示例.docx

    在自动化和工业控制领域,TIA博途( Totally Integrated Automation...以上就是在TIA博途中,字符转换为字符串以及截取字符串有效字符的具体方法。理解并熟练运用这些技术,能帮助我们在处理通信数据时更加高效和准确。

    delphi 实现截取字符串中中文+英文混合截取

    然而,截取字符串时,如果不注意,可能会因为字节对齐的问题导致字符被错误地分割。例如,如果一个中文字符被截断在两个字节之间,那么在显示时就会出现乱码。 要实现安全的混合字符串截取,我们可以使用Delphi内置...

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

    本文实例讲述了Go语言按字节截取字符串的方法。分享给大家供大家参考。具体实现方法如下: 代码如下:// 按字节截取字符串 utf-8不乱码 func SubstrByByte(str string, length int) string {  bs := []byte(str)[:...

    java 一个截取字符串的函数

    本题中,我们需要编写一个函数,该函数能够根据指定的字节数截取字符串,并确保不会出现汉字被截半的情况。这是一个涉及字符编码和边界条件处理的问题。 首先,我们来理解题目中的要求: 1. 函数接收两个参数,一个...

    JAVA 按照字节截取字符串

    一般截取字符串是按照字符截取的,现在这个代码是按照字节截取字符

Global site tag (gtag.js) - Google Analytics