查找字符串中含有的数字的个数

时间:2022-09-17 16:15:17
import java.util.Scanner;                   //可写import java.util.*; 导入java.util包
class Assignment1 {
    public static void main(String[] args) {
        int letter=0;                       //是字母
        int number=0;                       //是数字
        int other=0;                        //是其他字符
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入字符串:");
        String s=sc.nextLine();             //读取字符串,以回车为结束; sc.next()以空格、Tab、回车结束,所以不能读取空格
        //分析字符所属类型
        for(int i=0;i<s.length();i++)       //数组的length属性(.length),字符串的length方法(.length())
        {
            char x=s.charAt(i);             //返回指定索引处的char值
            //if(Character.isUpperCase(x)||Character.isLowerCase(x))是否为大写或小写字母
            if(Character.isLetter(x))       //是否为字母; Character.isAlphabetic()似乎用法类似,多了一种"OTHER_LETTER",存疑
            {
                letter++;
            }
            else if(Character.isDigit(x))   //是否为数字
            {
                number++;
            }
            else                            //其他字符
            {
                other++;
            }
        }
        //System.out.println("字母个数:"+letter);
        //System.out.println("数字个数:"+number);
        //System.out.println("其他字符个数:"+other);

        System.out.println("字母个数:"+letter+"\n数字个数:"+number+"\n其他字符个数:"+other);
                                            //记得在要连接的之间加上"+"
        sc.close();                         //关闭操作

split()+正则表达式来进行截取。 
将正则传入split()。返回的是一个字符串数组类型。不过通过这种方式截取会有很大的性能损耗,因为分析正则非常耗时。

String str = "abc,12,3yy98,0"; String[] strs=str.split(","); for(int i=0,len=strs.length;i<len;i++){ System.out.println(strs[i].toString()); }
 
 

通过subString()方法来进行字符串截取。 
subString通过不同的参数来提供不同的截取方式 
2.1只传一个参数 
例如:

    String sb = "bbbdsajjds"; sb.substring(2);


通过StringUtils提供的方法 
StringUtils.substringBefore(“dskeabcee”, “e”); 
/结果是:dsk
这里是以第一个”e”,为标准。

StringUtils.substringBeforeLast(“dskeabcee”, “e”) 
结果为:dskeabce 
这里以最后一个“e”为准

    }

}