`

不考虑字符编码,按字节截取含有中文汉字的字符串

阅读更多
要求实现一个按字节截取字符串的方法,比如对于字符串"我ZWR爱JAVA",截取它的前四位字节应该是"我ZW",而不是"我ZWR",同时要保证不会出现截取了半个汉字的情况。
英文字母和中文汉字在不同的编码格式下,所占用的字节数也是不同的。我下面这个就是不考虑字符集,就是说适用java的所有字符集。utf-8 时中文占3个字节,GBK时中文占两个字节。下面是我的代码:

package com.wmj.test;



public class MyTest {

public static void main(String[] args) {

String str1="我love 非常JAVA 呀 ";
System.out.println(getStringByByte(str1,8));

        //System.out.println("当前编码集:"+new String(Charset.defaultCharset().toString()).equalsIgnoreCase("utf-8"));
       
}

public static String getStringByByte(String str1,int byteNum){
String strTemp = null;
byte[] bytes1=null;
byte[] bytes2 = null;
byte[] bytes3 = null;
String str2 = "c";
String str3 = "中";
char[] char1=null;
try {
bytes1=str1.getBytes();
bytes2 = str2.getBytes();
bytes3 = str3.getBytes();
char1=str1.toCharArray();
} catch (Exception e) {
}
int size1=bytes1.length;
    int size2=bytes2.length;
    int size3=bytes3.length;
System.out.println("一个字符所占字节数:" + size2);
System.out.println("一个中文字符所占字节数:" + size3);
if(size1<=byteNum){
return str1;
}else if(byteNum<0){
System.out.println("数字必须大于0:" + byteNum);
}

    int count=0;
    for(int i=0;i<char1.length;i++){
    char ch=char1[i];
    String str=String.valueOf(ch);
    int chL=str.getBytes().length;
    count+=chL;
    if(count-byteNum==0){
    strTemp=new String(char1,0,i+1);
    break;
    }else if(count-byteNum>0){
    if(chL==size2){
    strTemp=new String(char1,0,i);
    break;
    }else if(chL==size3){
    strTemp=new String(char1,0,i+1);
    break;
    }
    }
    }

return strTemp;
}



}
分享到:
评论

相关推荐

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

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

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

    总的来说,按照字节长度截取字符串需要考虑字符编码的影响,通过`Encoding`类处理字符串的字节表示,并结合正则表达式进行精确截取。在实际应用中,确保对字符串编码的理解和处理方式的正确性至关重要,以避免可能...

    中英文字符串按字节截取

    截取含有中英文的字符串,按字节进行截取,当出现汉字时不能截取半个汉字要把汉字补全。

    字符串截取(按字节)

    通过上述分析,我们可以看到,按字节截取字符串并不简单,特别是当涉及到多字节字符编码时。Java代码示例提供了一个相对复杂的解决方案,通过仔细检查字节序列并确保完整字符的边界,有效地实现了这一功能。这对于...

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

    在IT行业中,字符串处理是一项基础且重要的任务,尤其是在编程领域。字符串是由字符组成的...但要注意,字节截取可能会涉及到字符编码问题,因此在实际操作时要特别留意编码格式,避免出现乱码或者截取不完整的情况。

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

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

    java按字节截取带有汉字的字符串的解法(推荐)

    在Java编程语言中,处理包含汉字的字符串时,由于汉字在不同编码格式下占用的字节数不同,按字节截取字符串会面临特殊挑战。本文将深入探讨如何正确地按字节截取带有汉字的字符串,以确保不出现半字符或者乱码的情况...

    java中截取带汉字的字符串

    如果字符串长度不能被每次截取的字节数整除,则最后一次截取的长度会少于指定的字节数。 3. **实现截取逻辑**:遍历字符串,按照计算出的次数进行截取,并打印或存储每次截取的结果。 #### 示例代码解析 ```java ...

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

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

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

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

    JavaScript截取中文字符串

    因此,在处理含有中文的字符串时,简单的字符计数并不准确,需要考虑字符的实际编码长度。 #### 三、函数实现原理 本示例中的`subString`函数通过以下步骤实现了中文字符串的精准截取: 1. **初始化变量**:定义...

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

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

    JAVA如何按字节截取字符串

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

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

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

    PHP中如何截取中文字符串

    在实际开发中,考虑到性能和兼容性,推荐使用`mb_substr()`函数来处理中文字符串的截取。同时,为了确保代码的健壮性,应该始终在处理字符串时明确指定字符编码,避免因环境差异引发的问题。 总结,处理中文字符串...

    中文字符串截取(支持各种编码格式)底层实现源码

    在IT领域,字符串处理是日常开发中的重要环节,特别是在处理包含中文字符的字符串时,由于中文字符占据的字节数量不同于英文字符,因此在截取字符串时需要考虑到不同的编码格式。本文将深入探讨中文字符串截取的底层...

    根据字节数截取字符串

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

    C#字符串截取

    此方法适用于英文和数字字符为主的字符串截取,不考虑多字节字符的情况。 #### 参数说明: - `str`:需要截取的原始字符串。 - `len`:需要截取的长度(按字节计算)。 #### 实现原理: 1. **去除前后空格**:使用...

    按byte截取字符串

    总结来说,“按byte截取字符串”是一项实用的技术,涉及到字符串编码、字节数组操作以及对Java语言特性的深入理解。在实际开发中,掌握这项技能对于处理与字节流相关的任务至关重要,尤其是在处理网络数据传输、文件...

    高效中英文字符串截取方法

    ### 高效中英文字符串截取方法 #### 知识点概述 本文将详细介绍一种用于高效截取中英文混合字符串的方法。该方法适用于处理大量数据(例如10万条记录),能够在极短的时间内(例如1秒)完成所需的操作。这种方法...

Global site tag (gtag.js) - Google Analytics