`

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

阅读更多
要求实现一个按字节截取字符串的方法,比如对于字符串"我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#字符串截取固定长度的方法

    在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语言特性的深入理解。在实际开发中,掌握这项技能对于处理与字节流相关的任务至关重要,尤其是在处理网络数据传输、文件...

Global site tag (gtag.js) - Google Analytics