解决方案 »
- 在javabeen中,这句话是什么意思?
- java如何实现广域网通信?
- 500分求Java正态分布算法
- 将数字转为中文金额的大写方式(Java版)
- APPLET计算器程序 C 键不起作用 (偶不懂JAVA,别人让帮忙看,麻烦大家弄一下)
- 为什么我用import org.dom4j.Document;它报错呢?我用的是MyEclipes
- 我十分想知道关于证书链以及证书验证的原理
- 如何让程序(如java Hello)只启动一次?
- 向List集合插入不同数据,循环输出都为插入的最后一项。
- java中的绝对单列设计模式,
- java发送邮件时候,代码中的密码如何不使用明文
- java怎么实现把DOC文件转pdf文件下载
for(int i = 0;i < abcStr.length;i++){
System.out.print(abcStr[i]+" ");
}
System.out.println();
我知道这些重复的代码最好用函数来是实现。
但这个毕竟只是测试类。
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;/**
* 字符串分类
* @author prime_cjj
* function:输入一段字符串,判断是否有中文,有的话并输出,共有多少个大小写字母、数字空格号跟其他符号,并分别列出来
*/
public class StringClassified { public static void main(String[] args) {
checkfilename("输入一段字符串,ssss判断是否有中文dd,有的话并输d出,共有多w少个大小5写字母、数字空e6格号跟其他符号,并f分别列s出来");
}
public static void checkfilename(String s){
s=new String(s.getBytes());//用GBK编码
String pattern="[\u4e00-\u9fa5]+";
Pattern p=Pattern.compile(pattern);
Matcher result=p.matcher(s);
while (result.find()) {
System.out.println(result.group());
}
}}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class StringClassfied {
static String str;
public StringClassfied(){
System.out.println("请随意敲击键盘,我可以帮你分析哦!");
Scanner sc = new Scanner(System.in); //创建一个Scanner对象用来读取键盘输入
str = sc.nextLine(); //将读取到的数据转化为字符串类型
}
//分析
public void ClassifyString(String str){
/*
* 存在中文
* 判断
* public boolean matches(String regex)
* 告知此字符串是否匹配给定的正则表达式。
*/
if(str.matches(".*[\\u4e00-\\u9faf].*")){
String pattern="[\u4e00-\u9fa5]"; //正则表达式
Pattern p=Pattern.compile(pattern); //将给定的正则表达式编译到模式中。
Matcher result=p.matcher(str); //创建匹配给定输入与此模式的匹配器。
ArrayList arrays = new ArrayList();
while (result.find()) { //如果匹配成功,则可以通过 start、end 和 group 方法获取更多信息。
//将中文存放到arrays中
arrays.add(result.group());
}
System.out.print("存在中文,有 "+arrays.size()+" 个字,分别为:");
Object[] zhongwen = arrays.toArray();
print(zhongwen);
}else{
System.out.println("不存在中文。");
}
System.out.println();
//小写字母
if(str.matches(".*[a-z].*")){
String pattern="[a-z]"; //正则表达式
Pattern p=Pattern.compile(pattern); //将给定的正则表达式编译到模式中。
Matcher result=p.matcher(str); //创建匹配给定输入与此模式的匹配器。
ArrayList arrays = new ArrayList();
while (result.find()) { //如果匹配成功,则可以通过 start、end 和 group 方法获取更多信息。
//将对象存放到arrays中
arrays.add(result.group());
}
System.out.print("存在小写字母,有 "+arrays.size()+" 个,分别为:");
Object[] SmallLetter = arrays.toArray();
print(SmallLetter);
}else{
System.out.println("不存在小写字母。");
}
System.out.println();
//大写字母
if(str.matches(".*[A-Z].*")){
String pattern="[A-Z]"; //正则表达式
Pattern p=Pattern.compile(pattern); //将给定的正则表达式编译到模式中。
Matcher result=p.matcher(str); //创建匹配给定输入与此模式的匹配器。
ArrayList arrays = new ArrayList();
while (result.find()) { //如果匹配成功,则可以通过 start、end 和 group 方法获取更多信息。
//将对象存放到arrays中
arrays.add(result.group());
}
System.out.print("存在大写字母,有 "+arrays.size()+" 个,分别为:");
Object[] SmallLetter = arrays.toArray();
print(SmallLetter);
}else{
System.out.println("不存在大写字母。");
}
System.out.println();
//数字
if(str.matches(".*[0-9].*")){
String pattern="[0-9]"; //正则表达式
Pattern p=Pattern.compile(pattern); //将给定的正则表达式编译到模式中。
Matcher result=p.matcher(str); //创建匹配给定输入与此模式的匹配器。
ArrayList arrays = new ArrayList();
while (result.find()) { //如果匹配成功,则可以通过 start、end 和 group 方法获取更多信息。
//将对象存放到arrays中
arrays.add(result.group());
}
System.out.print("存在数字,有 "+arrays.size()+" 个,分别为:");
Object[] SmallLetter = arrays.toArray();
print(SmallLetter);
}else{
System.out.println("不存在数字。");
}
System.out.println();
//空格号
if(str.matches(".*[ ].*")){
String pattern="[ ]"; //正则表达式
Pattern p=Pattern.compile(pattern); //将给定的正则表达式编译到模式中。
Matcher result=p.matcher(str); //创建匹配给定输入与此模式的匹配器。
ArrayList arrays = new ArrayList();
while (result.find()) { //如果匹配成功,则可以通过 start、end 和 group 方法获取更多信息。
//将对象存放到arrays中
arrays.add(result.group());
}
System.out.print("存在空格号,有 "+arrays.size()+" 个");
}else{
System.out.println("不存在空格号。");
}
System.out.println();
//符号
if(str.matches(".*[^A-Za-z0-9_].*")){
String pattern="[^A-Za-z0-9_]"; //正则表达式
Pattern p=Pattern.compile(pattern); //将给定的正则表达式编译到模式中。
Matcher result=p.matcher(str); //创建匹配给定输入与此模式的匹配器。
ArrayList arrays = new ArrayList();
while (result.find()) { //如果匹配成功,则可以通过 start、end 和 group 方法获取更多信息。
//将对象存放到arrays中
arrays.add(result.group());
}
System.out.print("存在符号,有 "+arrays.size()+" 个,分别为:");
Object[] SmallLetter = arrays.toArray();
print(SmallLetter);
}else{
System.out.println("不存在数字。");
}
System.out.println();
}
public void print(Object[] obj){
for(int i = 0;i < obj.length;i++){
System.out.print(obj[i]+" ");
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
StringClassfied sc1 = new StringClassfied();
sc1.ClassifyString(str);
}}
感谢你的提示,我查阅了API以及搜索了正则表达式的使用。
根据你的提示,我修改了下代码(如上),但是有一个问题,就是符号比如逗号,句号如何用正则表达式来判断?