java中如何统计一个字符串的长度

在jsp页面接受输入的内容,统计一共有多少个中文字,例如:输入"今天阳光明媚", 输出6 .
不要求象word统计那样复杂。

    首先打开eclipse

    新建一个java项目,名字随意起

    名字起好后,点击完成

    右键点击项目名称,新建,类

    类的名字叫TextLength

    包的名字叫 com.zf.s2

    点击完成

    首先要判断是否是汉字

    public static int getChineseCount(String s) throws Exception{//获得汉字的长度

    char c;

    int chineseCount=0;                

    if(!"".equals("")){//判断是否为空

    s=new String(s.getBytes(),"GBK");   //进行统一编码

    }

    for(int i=0;i<s.length();i++){//for循环

    c=s.charAt(i);              //获得字符串中的每个字符

    if(isChineseChar(c)){//调用方法进行判断是否是汉字

    chineseCount++;                 //等同于chineseCount=chineseCount+1

    }

    }

    return chineseCount;                   //返回汉字个数

    }

    获得字母、数字、空格的个数

    public static String getStringInfo(String s){

    char ch;

    int character=0,blank=0,number=0;

    for(int i=0;i <s.length();i++)    //for循环

    {

    ch=s.charAt(i);

    if((ch>='a'&&ch <='z')||(ch>='A'&&ch <='Z'))//统计字母

    character++; //等同于character=character+1

    else if(ch==' ')                         //统计空格

    blank++; //等同于blank=blank+1

    else if(ch>='0'&& ch <='9')                //统计数字

    number++; //等同于number=number+1;

    }

    完整代码

    package com.zf.s2;//创建一个包

    public class TextLength {//描述字符串长度的类

    public static boolean isChineseChar(char c) throws Exception{//判断是否是一个汉字

    return String.valueOf(c).getBytes("GBK").length>1;//汉字的字节数大于1

    }

    public static int getChineseCount(String s) throws Exception{//获得汉字的长度

    char c;

    int chineseCount=0;                

    if(!"".equals("")){//判断是否为空

    s=new String(s.getBytes(),"GBK");   //进行统一编码

    }

    for(int i=0;i<s.length();i++){//for循环

    c=s.charAt(i);              //获得字符串中的每个字符

    if(isChineseChar(c)){//调用方法进行判断是否是汉字

    chineseCount++;                 //等同于chineseCount=chineseCount+1

    }

    }

    return chineseCount;                   //返回汉字个数

    }

    public static String getStringInfo(String s){//获得字母、数字、空格的个数

    char ch;

    int character=0,blank=0,number=0;

    for(int i=0;i <s.length();i++)    //for循环

    {

    ch=s.charAt(i);

    if((ch>='a'&&ch <='z')||(ch>='A'&&ch <='Z'))//统计字母

    character++; //等同于character=character+1

    else if(ch==' ')                         //统计空格

    blank++; //等同于blank=blank+1

    else if(ch>='0'&& ch <='9')                //统计数字

    number++; //等同于number=number+1;

    }

    return "字符串中共有"+character+"个字母,"+blank+"个空格,"+number+"个数字";

    }

    public static void main(String []args) throws Exception {//java程序的主入口方法

    String s="hello world 世界你好!!123*";

    System.out.println("字符串的总长度:"+s.length());//显示字符串长度

    System.out.println("字符串中汉字长度:"+getChineseCount(s)); //调用方法显示汉字长度

    System.out.println(getStringInfo(s));                       //调用方法显示其它字母类型的长度

    }

    }

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-09-11

通过String自带的length()方法获取字符串长度。

String a="abcdefg";//定义一个字符串
int len = a.length();//通过length获取字符串长度,这里等于7

length()该方法返回此字符串的长度。长度是等于Unicode代码单元中的字符串的数目。

第2个回答  2009-06-15
字符串是length().数组才是字符串的length属性.

这个东西有个问题.无论是汉字,符号,还是字母都会输出长度.

我这个不仅可以统计汉字数量,而且可以提取出汉字.

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {
public static void main(String[] args) {
int count = 0;
String regex = "[\u4e00-\u9fa5]";
String str = "今天阳光明媚zh2345678{不是吗},是的.";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
System.out.print("提取出来的中文有:");
while (m.find()) {
count++;
System.out.print(m.group() + " ");
}
System.out.println();
System.out.println("汉字出现的频率:" + count);
}
}
第3个回答  2009-06-15
例如:
<%
String myString="今天阳光明媚";
int myStringLength=myString.length();
out.print(myStringlength);
%>

肯定会输出 6的
第4个回答  2009-06-15
单纯用.length方法不行!那样你输入“今天yangguang明媚”,统计的是长度是11。
我以前用JS做个类似的!
<script language="javascript">
function checkNumber()
{
var str=document.getElementById('cont').value;
var cnum=0;
for(var i=0;i<str.length;i++){
var st=str.charCodeAt(i);
if(st>254){
cnum++;
}
}
alert("中文个数为:"+cnum);
}
</script>
JS的,你试试吧!因为ASCII值是0~254之间的,那么除去这个其他的都算成中文,但是也并不是!这只是个思路!呵呵

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网