编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节
截取的字符串。 但是要保证汉字不被截半个,如“我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,可能需要先将字符串...
题目中的问题聚焦于如何正确地截取一个中英混合的字符串,确保在截取过程中不会将汉字字符截断。这个问题涉及到字符编码、字符串处理以及对Unicode的理解。下面将详细解释相关知识点。 首先,我们要理解在C++中处理...
### Java中截取带汉字的字符串 在Java编程语言中,处理包含中文字符的字符串时,经常遇到的一个问题是如何正确地截取...通过以上方法,我们可以在Java中有效地处理包含中文字符的字符串截取问题,避免出现乱码等情况。
总结来说,处理Delphi中的中文和英文混合字符串截取,关键在于理解Unicode字符串的特性,正确选择和使用字符串截取函数,并在必要时进行字节对齐和编码转换。通过这样的方式,我们可以确保在处理多语言文本时不会...
- 该函数利用正则表达式实现对UTF-8编码字符串的截取。 - 正则表达式`[\x00-\x7F]`匹配单字节的ASCII字符,`[\xC0-\xFF][\x80-\xBF]+`匹配多字节的UTF-8字符。 **2.1.2 示例代码** ```php echo utf8Substr('善良...
总之,Java中的字符串截取不仅是一项基础技能,也是解决复杂问题的关键所在。通过理解字符编码原理,结合具体应用场景,开发者可以更加高效、准确地完成字符串的处理工作,提升软件产品的质量和用户体验。
根据给定文件的信息,本文将围绕“字符串截取”这一主题进行深入探讨,重点在于如何在Java环境下实现对包含中文字符的字符串进行精确截取,同时确保不会出现半个汉字的情况。 ### 字符串截取的基本概念 在计算机...
### 字符串截取按字节:深入解析与实践 在计算机编程中,字符串处理是一项基本而关键的任务,尤其在处理非英文字符时,如何精确地按照字节进行字符串截取变得尤为重要。本文将深入探讨一种按字节截取字符串的方法,...
- 在进行字符串截取时,需要注意编码的选择,不同的编码方式可能会导致截取结果的不同。 - 对于中文字符的处理,应特别注意边界情况的处理,避免出现半个汉字的情况。 - 使用 jQuery 操作 DOM 元素时,需要确保 ...
总的来说,处理带有汉字的字符串时,按照字节截取需要考虑字符编码,以避免破坏字符完整性。通过自定义方法并结合Java的字符编码功能,我们可以有效地解决这个问题。在实际开发中,理解字符编码和字节流的概念对于...
在进行字符串截取操作时,选择适当且支持多字节的函数,确保文件和输出的编码一致,这些都是避免编码问题的关键。在提供的`test.php`文件中,很可能包含了使用`mb_strcut`或其他类似函数处理UTF-8字符串的示例代码,...
本文将详细介绍一个专门用于处理中文字符串截取的JavaScript函数,该函数能够根据字符的实际编码长度来精确控制截取的长度。 #### 二、关键概念解析 ##### 2.1 字符串截取 字符串截取是指从一个较长的字符串中...
在 C++ 中处理汉字字符串时,一个重要的问题是如何正确地截取汉字字符串。下面将详细介绍相关的知识点。 一、GBK 编码简介 GBK 编码是一种中文字符编码标准,它是中国国家标准总局发布的国家标准。GBK 编码将中文...
在处理字符串截取时,我们通常需要关注几个关键的编程概念:编码格式、字符和字节的区别以及字符串和字节数组之间的转换。本文将基于标题和描述所提需求,详细探讨Java环境下实现字符串截取的方法以及相关知识点。 ...
总之,处理Python中的UTF-8中文字符串截取时,关键在于理解UTF-8编码的特点和Python字符串的操作方式。通过遵循上述原则,我们可以避免因错误操作导致的乱码问题,确保程序的正常运行和数据的准确展示。在开发过程中...
在上述内容中,提到了使用[]rune来处理中文字符串截取问题。具体操作步骤包括:首先将原始字符串转换为[]rune类型,此时字符串中的每一个中文字符都对应着一个或多个rune值;然后基于rune值进行截取,这样无论截取的...
首先,我们需要了解PHP中最常用的字符串截取函数——`substr()`。`substr()`函数允许我们从字符串的指定位置开始,截取指定长度的字符。其基本语法如下: ```php substr(string $string, int $start, ?int $length ...
在 Java 中,字符串截取可以通过多种方式实现,本文将介绍 Java 字符串截取的实例详解,包括GBK和utf-8编码下的字符串截取。 一、字符串截取的实例详解 在 Java 中,字符串截取可以通过使用substring()方法实现,...