`

Java 按字节获得字符串(中文)长度

    博客分类:
  • Java
阅读更多
package cn.com.songjy.test;

import java.io.UnsupportedEncodingException;

/**
 * 在Java中按字节获得字符串长度的两种方法
 *
 */

public class App 
{
    public static void main( String[] args ) throws UnsupportedEncodingException
    {
        String str = "只";
        
        System.out.println(getWordCount(str));
        System.out.println(getWordCountRegex(str));
        System.out.println(getWordCountCode(str,"GBK"));
        System.out.println(getWordCountCode(str,"UTF-8"));
    }
    
    /*由于Java是基于Unicode编码的,因此,一个汉字的长度为1,而不是2。
     * 但有时需要以字节单位获得字符串的长度。例如,“123abc长城”按字节长度计算是10,而按Unicode计算长度是8。
     * 为了获得10,需要从头扫描根据字符的Ascii来获得具体的长度。如果是标准的字符,Ascii的范围是0至255,如果是汉字或其他全角字符,Ascii会大于255。
     * 因此,可以编写如下的方法来获得以字节为单位的字符串长度。*/
    public static int getWordCount(String s)
    {
        int length = 0;
        for(int i = 0; i < s.length(); i++)
        {
            int ascii = Character.codePointAt(s, i);
            if(ascii >= 0 && ascii <=255)
                length++;
            else
                length += 2;
                
        }
        return length;
        
    }
    
    /*基本原理是将字符串中所有的非标准字符(双字节字符)替换成两个标准字符(**,或其他的也可以)。这样就可以直接例用length方法获得字符串的字节长度了*/
    public static  int getWordCountRegex(String s)
    {

        s = s.replaceAll("[^\\x00-\\xff]", "**");
        int length = s.length();
        return length;
    }
    
    /*按特定的编码格式获取长度*/
    public static int getWordCountCode(String str, String code) throws UnsupportedEncodingException{
    	return str.getBytes(code).length;
    }
}


引自:http://www.blogjava.net/nokiaguy/archive/2010/04/11/317982.html
分享到:
评论

相关推荐

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

    在Java编程语言中,处理带有汉字的字符串时,由于汉字占据多个字节,按照字节进行截取可能会导致汉字被不完整地分割,从而产生乱码。为了解决这个问题,我们需要理解Unicode编码以及如何在Java中正确处理多字节字符...

    JAVA如何按字节截取字符串

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

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

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

    java中截取带汉字的字符串

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

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

    这里需要注意的是,由于UTF-8编码可能造成字符串和字节数组的长度不一致,例如对于中文字符,“程”字在UTF-8编码下占用3个字节,因此如果截取长度不当时,最后一个字符可能无法形成一个完整的字符。 为了解决上述...

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

    Java 字符串截取函数 ...本例中,我们实现了一个 Java 字符串截取函数,该函数可以截取指定字节的字符串,并保证汉字不被截半个。该函数使用 `substring` 方法来实现字符串截取,并且可以应用于各种字符串处理场景。

    Java字符串前面或后面补0(适用于等不同长度比较) .txt

    Java字符串长度不够,将其前面补0或者后面补0,适用于字典序比较前,将要比较字符串的位数保持一致,再进行比较。

    二进制字节与字符串之间的转换

    在IT领域,数据的处理和传输常常涉及到二进制字节和字符串之间的转换。这是因为不同的系统和编程语言可能以不同的方式处理数据,有时需要将原始的二进制数据转化为易于处理和显示的字符串形式,反之亦然。在这个过程...

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

    但是,Java的字符串是Unicode的,`getBytes()`会根据指定的字符集编码字符串为字节数组。例如: ```java String str = "你好,世界"; int byteCount = 5; // 指定字节数 byte[] bytes = str.getBytes("UTF-8"); // ...

    java中的字符串处理

    ### Java中的字符串处理 #### 一、字符串的概念与特点 在Java中,字符串是一系列字符的集合,与其他编程语言将字符串视为字符数组不同,Java采用了更为先进的方式——将字符串视为`String`类型对象来处理。这种...

    JAVA可逆带秘钥字符串加密算法

    3. **加密**:调用`Cipher`对象的`encrypt()`方法,传入要加密的字符串(通常先转换成字节数组),得到加密后的字节数组。 4. **解密**:同样使用`Cipher`对象,但这次初始化为解密模式,然后调用`decrypt()`方法,...

    按byte截取字符串

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

    java字符串内存计算

    1. **String类头**:每个字符串对象都包含一个String类头,这部分固定占用24字节的空间,包含了对象头信息以及字符串长度等元数据。 2. **字符数组(char[])**:存储字符串的实际字符数据。这部分内存空间取决于字符...

    java中常用字符串方法总结

    4. **字符串长度** `length()`方法返回字符串的长度,即包含的字符数。 5. **字符访问** 字符串是不可变的,不能直接修改,但可以通过`charAt(int index)`获取特定位置的字符。 6. **子字符串** `substring(int...

    java处理字符和字符串课件

    - **长度**:使用`length()`方法获取字符串长度。 ```java int len = str.length(); ``` - **子串**:使用`substring(int beginIndex)`或`substring(int beginIndex, int endIndex)`方法获取子串。 ```java ...

    java判断中文字符串长度的简单实例

    因此,在这篇“Java判断中文字符串长度的简单实例”中,作者提供了几种计算字符串长度的方法,尤其强调了如何正确计算含有中文字符的字符串长度。 首先,Java中字符串的长度使用`.length()`方法来获取,但这个方法...

    java字符串的各种编码转换

    根据提供的文件信息,本文将详细解释Java中字符串的不同编码转换方法及原理,并深入探讨每种编码格式的特点。 ### Java字符串的编码转换 在Java中,处理不同字符集之间的字符串转换是一项常见任务。尤其是在处理...

    JAVA 字符串应用笔记

    在Java编程语言中,字符串是极其重要且常用的数据类型,尤其在Android开发中更是不可或缺。字符串主要用于处理文本信息,如用户输入、文件内容、网络数据等。以下是对"JAVA 字符串应用笔记"中可能涉及的一些核心知识...

    精彩编程与编程技巧-如何取得中英混合字符串的长度?...

    在探讨如何获取中英文混合字符串长度的过程中,我们首先需要理解几个关键的概念:字符编码、不同编程语言中的字符串处理方法以及一些具体的实现技巧。本篇文章将深入解析这些概念,并提供具体的解决方案。 ### 字符...

    JAVA中汉字字符转化为英文字符

    - 返回一个由汉字转换后的英文字符组成的字符串。 - **实现细节**: - 使用 `getBytes()` 方法获取字符串的字节数组。 - 遍历字节数组,检查每个字节是否小于0(即非ASCII字符)。 - 如果是负数,则使用位运算 `...

Global site tag (gtag.js) - Google Analytics