java 按字节获取字符串长度

java 按字节获取字符串长度,第1张

由于Java是基于Unicode编码的,因此,一个汉字的长度为1,而不是2。但有时需要以字节单位获得字符串的长度。例如,“123abc长城”按字节长度计算是10,而按Unicode计算长度是8。为了获得10,需要从头扫描根据字符的Ascii来获得具体的长度。如果是标准的字符,Ascii的范围是0至255,

如果是汉字或其他全角字符,Ascii会大于255。

如果你只是要数组的长度的话,那么任意的数组都有length属性,直接访问就可以了。如果你想要字符串数组中所有字符的长度,就得循环了。

string[]

a

=

{"111","22","3333","44444"};

int

rs=0;

for(

int

i=0

;

i<alength

;

i++

){

rs+=a[i]length();

}

//

rs为字符数组中所有字符串的长度之和。

String s="gsdhgjsjsgdjh";\x0d\int a=slength();//一定要有括号;\x0d\int a[]={45,5,8,45,21,6,68,4,8}\x0d\int b=alength;//没有括号偶;b=9\x0d\int a[]={{45,25},{89,6,7,1},{6,89,1},{9,6,2,1,2}};\x0d\int b=alength//b=4,\x0d\int c=a[0]length// c=2\x0d\int d=a[3]length//d=5;;

public String getStr(String strValue, int intKey) {

String strResult = "";

char[] charStr = strValuetoCharArray();

for (char charItem : charStr) {

if ((charItem + "")getBytes()length > 1) {

intKey -= 2;

}

else {

intKey --;

}

if (intKey < 0) {

break;

}

else {

strResult += charItem;

}

}

if (intKey > 0) {

Systemoutprintln("提供的数字超过字符串的长度,在此处做处理");

}

return strResult;

}

Java规定了字符的内码要用UTF-16编码,一个字符是2个字节。外码字符所占字节取决于具体编码。字符和字节是不一样的。

外码编码不同,字符和字节的换算不同,几种常见的编码换算如下:

ASCII编码是单字节编码,只有英文字符,不能编码汉字。

GBK编码1个英文字符是1个字节,一个汉字是是2个字节。

UTF-8编码1个英文字符是1个字节,一个汉字是3个字节。

Unicode编码1个英文字符是2个字节,一个汉字是2个字节。

扩展资料

汉字编码的困难点 汉字进入计算机,有许多困难,其原因主要有三点:

①数量庞大:一般认为,汉字总数已超过6万个(包括简化字)。虽有研究者主张规定3000多或4000字作为当代通用汉字,但仍比处理由二三十个字母组成的拼音文字要困难得多。

②字形复杂:有古体今体,繁体简体,正体异体;而且笔画相差悬殊,少的一笔,多的达36笔,简化后平均为98笔。

③存在大量一音多字和一字多音的现象:汉语音节416个,分声调后为1295个(根据《现代汉语词典》统计,轻声39个未计)。以1万个汉字计算,每个不带调的音节平均超过24个汉字,每个带调音节平均超过77个汉字。有的同音同调字多达66个。一字多音现象也很普遍。

参考资料来源:百度百科-编码

package comitheima;  

  

  10、 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 

  但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。 

   

  @author 281167413@qqcom 

 /  

  

public class Test10 {  

  

    public static void main(String[] args) {  

        String srcStr1 = "我ABC";  

        String srcStr2 = "我ABC汉DEF";  

  

        splitString(srcStr1, 4);  

        splitString(srcStr2, 6);  

    }  

  

    public static void splitString(String src, int len) {  

        int byteNum = 0;  

  

        if (null == src) {  

            Systemoutprintln("The source String is null!");  

            return;  

        }  

  

        byteNum = srclength();  

        byte bt[] = srcgetBytes(); // 将String转换成byte字节数组  

  

        if (len > byteNum) {  

            len = byteNum;  

        }  

  

        // 判断是否出现了截半,截半的话字节对于的ASC码是小于0的值  

        if (bt[len] < 0) {  

            String subStrx = new String(bt, 0, --len);  

            Systemoutprintln("subStrx==" + subStrx);  

        } else {  

            String subStrx = new String(bt, 0, len);  

            Systemoutprintln("subStrx==" + subStrx);  

        }  

    }  

  

}

ps:看比人博客上面的,具体的没 *** 作过,

以上就是关于java 按字节获取字符串长度全部的内容,包括:java 按字节获取字符串长度、java里如何获取字符数组中有内容的字符长度、java中如何获取数组长度和字符串长度的代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9357198.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存