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编程语言中,处理带有汉字的字符串时,由于汉字占据多个字节,按照字节进行截取可能会导致汉字被不完整地分割,从而产生乱码。为了解决这个问题,我们需要理解Unicode编码以及如何在Java中正确处理多字节字符...
"JAVA按照字节截取字符串" JAVA按照字节截取字符串是Java编程语言中的一项重要技术,通过本文,我们将详细介绍如何使用Java语言按照字节截取字符串。 首先,我们需要了解什么是字节截取。在计算机科学中,字节是...
在Java编程语言中,处理包含汉字的字符串时,由于汉字在不同编码格式下占用的字节数不同,按字节截取字符串会面临特殊挑战。本文将深入探讨如何正确地按字节截取带有汉字的字符串,以确保不出现半字符或者乱码的情况...
如果字符串长度不能被每次截取的字节数整除,则最后一次截取的长度会少于指定的字节数。 3. **实现截取逻辑**:遍历字符串,按照计算出的次数进行截取,并打印或存储每次截取的结果。 #### 示例代码解析 ```java ...
这里需要注意的是,由于UTF-8编码可能造成字符串和字节数组的长度不一致,例如对于中文字符,“程”字在UTF-8编码下占用3个字节,因此如果截取长度不当时,最后一个字符可能无法形成一个完整的字符。 为了解决上述...
Java 字符串截取函数 ...本例中,我们实现了一个 Java 字符串截取函数,该函数可以截取指定字节的字符串,并保证汉字不被截半个。该函数使用 `substring` 方法来实现字符串截取,并且可以应用于各种字符串处理场景。
Java字符串长度不够,将其前面补0或者后面补0,适用于字典序比较前,将要比较字符串的位数保持一致,再进行比较。
在IT领域,数据的处理和传输常常涉及到二进制字节和字符串之间的转换。这是因为不同的系统和编程语言可能以不同的方式处理数据,有时需要将原始的二进制数据转化为易于处理和显示的字符串形式,反之亦然。在这个过程...
但是,Java的字符串是Unicode的,`getBytes()`会根据指定的字符集编码字符串为字节数组。例如: ```java String str = "你好,世界"; int byteCount = 5; // 指定字节数 byte[] bytes = str.getBytes("UTF-8"); // ...
### Java中的字符串处理 #### 一、字符串的概念与特点 在Java中,字符串是一系列字符的集合,与其他编程语言将字符串视为字符数组不同,Java采用了更为先进的方式——将字符串视为`String`类型对象来处理。这种...
3. **加密**:调用`Cipher`对象的`encrypt()`方法,传入要加密的字符串(通常先转换成字节数组),得到加密后的字节数组。 4. **解密**:同样使用`Cipher`对象,但这次初始化为解密模式,然后调用`decrypt()`方法,...
总结来说,“按byte截取字符串”是一项实用的技术,涉及到字符串编码、字节数组操作以及对Java语言特性的深入理解。在实际开发中,掌握这项技能对于处理与字节流相关的任务至关重要,尤其是在处理网络数据传输、文件...
1. **String类头**:每个字符串对象都包含一个String类头,这部分固定占用24字节的空间,包含了对象头信息以及字符串长度等元数据。 2. **字符数组(char[])**:存储字符串的实际字符数据。这部分内存空间取决于字符...
4. **字符串长度** `length()`方法返回字符串的长度,即包含的字符数。 5. **字符访问** 字符串是不可变的,不能直接修改,但可以通过`charAt(int index)`获取特定位置的字符。 6. **子字符串** `substring(int...
- **长度**:使用`length()`方法获取字符串长度。 ```java int len = str.length(); ``` - **子串**:使用`substring(int beginIndex)`或`substring(int beginIndex, int endIndex)`方法获取子串。 ```java ...
因此,在这篇“Java判断中文字符串长度的简单实例”中,作者提供了几种计算字符串长度的方法,尤其强调了如何正确计算含有中文字符的字符串长度。 首先,Java中字符串的长度使用`.length()`方法来获取,但这个方法...
根据提供的文件信息,本文将详细解释Java中字符串的不同编码转换方法及原理,并深入探讨每种编码格式的特点。 ### Java字符串的编码转换 在Java中,处理不同字符集之间的字符串转换是一项常见任务。尤其是在处理...
在Java编程语言中,字符串是极其重要且常用的数据类型,尤其在Android开发中更是不可或缺。字符串主要用于处理文本信息,如用户输入、文件内容、网络数据等。以下是对"JAVA 字符串应用笔记"中可能涉及的一些核心知识...
在探讨如何获取中英文混合字符串长度的过程中,我们首先需要理解几个关键的概念:字符编码、不同编程语言中的字符串处理方法以及一些具体的实现技巧。本篇文章将深入解析这些概念,并提供具体的解决方案。 ### 字符...
- 返回一个由汉字转换后的英文字符组成的字符串。 - **实现细节**: - 使用 `getBytes()` 方法获取字符串的字节数组。 - 遍历字节数组,检查每个字节是否小于0(即非ASCII字符)。 - 如果是负数,则使用位运算 `...