`
smilingamao
  • 浏览: 4986 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

汉字编码问题--字符串截取

阅读更多

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

按照GBK编码规范,如果一个字节无符号值大于127,则不管后面一个字节大小是多少,这两个字节共同表示一
个汉字。

问题的关键在于考虑截取长度的最后一个字节和倒数第二个字节,如果最后一个字节是属于一个汉字的第一个字
节,忽略即可;如果倒数1,2个字节构成一个汉字,就不需要截取。
注意:此题目未明确声明编码规范,但中文平台下默认的编码规范为"GBK",故按此规范操作,源码如下。

 

package com.string;

import java.io.UnsupportedEncodingException;

public class SplitString {
 
 public String str;
 public int bytes;
 public byte[] strBytes;
 public byte[] result;
 public byte[] another;
 //字节大于127,值是负数
 public byte border = 0;
 
 public SplitString(String str, int bytes){
  this.str = str;
  this.bytes = bytes;
  System.out.println("The String is: "+str+" ; Bytes is : "+bytes);
 }
 
 public void split(){
  try{
   strBytes = str.getBytes("GBK");
   
   result = new byte[bytes];
   another = new byte[bytes-1];
   
   for(int i=0;i<result.length;i++){
    result[i] = strBytes[i];
   }
   
   //判断是否汉字第一个字符(无符号值>127;带符号则<0,为负数!)
   if(result[result.length-1]<border){
    
    if(result[result.length-2]<border){
     System.out.println(new String(result));
     return;
    }
    
    for(int i=0;i<another.length;i++){
     another[i]=result[i];
    }
    System.out.println(new String(another));
   }else{
    System.out.println(new String(result));
   }
   
  }catch(UnsupportedEncodingException e){
   e.printStackTrace();
  }
 }
 
 public static void main(String[] args) {
  
  SplitString amao;
  
      //amao = new SplitString("我ABC",4);
  amao = new SplitString("我ABC汉DEF",7);
  
  amao.split();
 }

}

分享到:
评论

相关推荐

    截取指定长度的字符串

    对于包含汉字的字符串,需要注意编码问题。不同的编程语言对非ASCII字符(如汉字)的处理方式不同。在Python 3中,字符串默认使用Unicode编码,可以直接处理汉字。而在一些其他语言中,如Java,可能需要先将字符串...

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

    题目中的问题聚焦于如何正确地截取一个中英混合的字符串,确保在截取过程中不会将汉字字符截断。这个问题涉及到字符编码、字符串处理以及对Unicode的理解。下面将详细解释相关知识点。 首先,我们要理解在C++中处理...

    java中截取带汉字的字符串

    ### Java中截取带汉字的字符串 在Java编程语言中,处理包含中文字符的字符串时,经常遇到的一个问题是如何正确地截取...通过以上方法,我们可以在Java中有效地处理包含中文字符的字符串截取问题,避免出现乱码等情况。

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

    总结来说,处理Delphi中的中文和英文混合字符串截取,关键在于理解Unicode字符串的特性,正确选择和使用字符串截取函数,并在必要时进行字节对齐和编码转换。通过这样的方式,我们可以确保在处理多语言文本时不会...

    php字符串截取.pdf

    - 该函数利用正则表达式实现对UTF-8编码字符串的截取。 - 正则表达式`[\x00-\x7F]`匹配单字节的ASCII字符,`[\xC0-\xFF][\x80-\xBF]+`匹配多字节的UTF-8字符。 **2.1.2 示例代码** ```php echo utf8Substr('善良...

    [待删除]字符串截取 - 中英文

    总之,Java中的字符串截取不仅是一项基础技能,也是解决复杂问题的关键所在。通过理解字符编码原理,结合具体应用场景,开发者可以更加高效、准确地完成字符串的处理工作,提升软件产品的质量和用户体验。

    字符串 截取

    根据给定文件的信息,本文将围绕“字符串截取”这一主题进行深入探讨,重点在于如何在Java环境下实现对包含中文字符的字符串进行精确截取,同时确保不会出现半个汉字的情况。 ### 字符串截取的基本概念 在计算机...

    字符串截取(按字节)

    ### 字符串截取按字节:深入解析与实践 在计算机编程中,字符串处理是一项基本而关键的任务,尤其在处理非英文字符时,如何精确地按照字节进行字符串截取变得尤为重要。本文将深入探讨一种按字节截取字符串的方法,...

    字符串截取

    - 在进行字符串截取时,需要注意编码的选择,不同的编码方式可能会导致截取结果的不同。 - 对于中文字符的处理,应特别注意边界情况的处理,避免出现半个汉字的情况。 - 使用 jQuery 操作 DOM 元素时,需要确保 ...

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

    总的来说,处理带有汉字的字符串时,按照字节截取需要考虑字符编码,以避免破坏字符完整性。通过自定义方法并结合Java的字符编码功能,我们可以有效地解决这个问题。在实际开发中,理解字符编码和字节流的概念对于...

    以utf8格式截取的字符串编码

    在进行字符串截取操作时,选择适当且支持多字节的函数,确保文件和输出的编码一致,这些都是避免编码问题的关键。在提供的`test.php`文件中,很可能包含了使用`mb_strcut`或其他类似函数处理UTF-8字符串的示例代码,...

    JavaScript截取中文字符串

    本文将详细介绍一个专门用于处理中文字符串截取的JavaScript函数,该函数能够根据字符的实际编码长度来精确控制截取的长度。 #### 二、关键概念解析 ##### 2.1 字符串截取 字符串截取是指从一个较长的字符串中...

    C++中汉字字符串的截取

    在 C++ 中处理汉字字符串时,一个重要的问题是如何正确地截取汉字字符串。下面将详细介绍相关的知识点。 一、GBK 编码简介 GBK 编码是一种中文字符编码标准,它是中国国家标准总局发布的国家标准。GBK 编码将中文...

    截取如下字符串“java程序教程”的前5个字节,字符串应该为“java程”,截取前6个字符,字符串也应该为“java程”,程序实现之.

    在处理字符串截取时,我们通常需要关注几个关键的编程概念:编码格式、字符和字节的区别以及字符串和字节数组之间的转换。本文将基于标题和描述所提需求,详细探讨Java环境下实现字符串截取的方法以及相关知识点。 ...

    Python中文字符串截取问题

    总之,处理Python中的UTF-8中文字符串截取时,关键在于理解UTF-8编码的特点和Python字符串的操作方式。通过遵循上述原则,我们可以避免因错误操作导致的乱码问题,确保程序的正常运行和数据的准确展示。在开发过程中...

    Golang中文字符串截取函数实现原理

    在上述内容中,提到了使用[]rune来处理中文字符串截取问题。具体操作步骤包括:首先将原始字符串转换为[]rune类型,此时字符串中的每一个中文字符都对应着一个或多个rune值;然后基于rune值进行截取,这样无论截取的...

    php截取字符串

    首先,我们需要了解PHP中最常用的字符串截取函数——`substr()`。`substr()`函数允许我们从字符串的指定位置开始,截取指定长度的字符。其基本语法如下: ```php substr(string $string, int $start, ?int $length ...

    java 字符串截取的实例详解

    在 Java 中,字符串截取可以通过多种方式实现,本文将介绍 Java 字符串截取的实例详解,包括GBK和utf-8编码下的字符串截取。 一、字符串截取的实例详解 在 Java 中,字符串截取可以通过使用substring()方法实现,...

Global site tag (gtag.js) - Google Analytics