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”为准
} }