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中正确处理多字节字符...
// 如果最大长度大于或等于字符串长度,则返回原字符串 } byte[] resultBytes = new byte[maxLength]; System.arraycopy(bytes, 0, resultBytes, 0, maxLength); return new String(resultBytes); // 将结果...
在Java编程语言中,处理包含汉字的字符串时,由于汉字在不同编码格式下占用的字节数不同,按字节截取字符串会面临特殊挑战。本文将深入探讨如何正确地按字节截取带有汉字的字符串,以确保不出现半字符或者乱码的情况...
如果字符串长度不能被每次截取的字节数整除,则最后一次截取的长度会少于指定的字节数。 3. **实现截取逻辑**:遍历字符串,按照计算出的次数进行截取,并打印或存储每次截取的结果。 #### 示例代码解析 ```java ...
这里需要注意的是,由于UTF-8编码可能造成字符串和字节数组的长度不一致,例如对于中文字符,“程”字在UTF-8编码下占用3个字节,因此如果截取长度不当时,最后一个字符可能无法形成一个完整的字符。 为了解决上述...
Java 字符串截取函数 ...本例中,我们实现了一个 Java 字符串截取函数,该函数可以截取指定字节的字符串,并保证汉字不被截半个。该函数使用 `substring` 方法来实现字符串截取,并且可以应用于各种字符串处理场景。
3. **加密**:调用`Cipher`对象的`encrypt()`方法,传入要加密的字符串(通常先转换成字节数组),得到加密后的字节数组。 4. **解密**:同样使用`Cipher`对象,但这次初始化为解密模式,然后调用`decrypt()`方法,...
Java字符串长度不够,将其前面补0或者后面补0,适用于字典序比较前,将要比较字符串的位数保持一致,再进行比较。
在IT领域,数据的处理和传输常常涉及到二进制字节和字符串之间的转换。这是因为不同的系统和编程语言可能以不同的方式处理数据,有时需要将原始的二进制数据转化为易于处理和显示的字符串形式,反之亦然。在这个过程...
但是,Java的字符串是Unicode的,`getBytes()`会根据指定的字符集编码字符串为字节数组。例如: ```java String str = "你好,世界"; int byteCount = 5; // 指定字节数 byte[] bytes = str.getBytes("UTF-8"); // ...
### Java中的字符串处理 #### 一、字符串的概念与特点 在Java中,字符串是一系列字符的集合,与其他编程语言将字符串视为字符数组不同,Java采用了更为先进的方式——将字符串视为`String`类型对象来处理。这种...
总结来说,“按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中,处理不同字符集之间的字符串转换是一项常见任务。尤其是在处理...
这样,替换后的字符串长度减去"aa"的长度之后,就等于原始字符串中英文和标点符号的总数量,而原始字符串中所有中文字符的总数就是字符串长度减去替换后字符串长度后得到的差值。 需要注意的是,这个示例的代码可能...
在Java编程语言中,字符串是极其重要且常用的数据类型,尤其在Android开发中更是不可或缺。字符串主要用于处理文本信息,如用户输入、文件内容、网络数据等。以下是对"JAVA 字符串应用笔记"中可能涉及的一些核心知识...
在探讨如何获取中英文混合字符串长度的过程中,我们首先需要理解几个关键的概念:字符编码、不同编程语言中的字符串处理方法以及一些具体的实现技巧。本篇文章将深入解析这些概念,并提供具体的解决方案。 ### 字符...