java中的正则表达式问题
在网上一搜一大堆全部是将什么格式的1:我要的是java中正则表达式怎么用怎么书写。需要导入那些包,匹配器等怎么用这些基本的我都不会。拿着代码不知道往哪里放。求教程。2:我...
在网上一搜一大堆全部是将 什么 格式的
1:我要的是java中正则表达式怎么用 怎么书写。需要导入那些包,匹配器等怎么用这些基本的我都不会。拿着代码不知道往哪里放。求教程。
2:我想把用户输入的数据都用String接收 然后 用正则判断。如果是整形就放到int里面 是char 就放大char里面 等等 如何实现String类型向这些类型的转换!
3:下面这段代码在运行时输入性别男或 女正常 输入别的会重复。但是为什么输入了别的之后鼠标指针回不在下一行,要手动点到下一行才能再输入 否则报错 怎么回事!
import java.util.*;import java.util.regex.Matcher;import java.util.regex.Pattern;
import io.jiekou1;
public class Stringshow {
public static void main(String[] args) {
panduan ppdd=new panduan(); char age=ppdd.pdGender(); System.out.println("-------------"); System.out.println(age); }
}class panduan{ Scanner in=new Scanner(System.in); public char pdGender(){ System.out.println("输入性别"); while(true){ String x=in.next(); Pattern p=Pattern.compile("[男女]"); Matcher m=p.matcher(x); if(m.matches()){ char[] a=x.toCharArray(); return a[0]; }else{ System.out.println("输入有误,请重新输入");
} } 展开
1:我要的是java中正则表达式怎么用 怎么书写。需要导入那些包,匹配器等怎么用这些基本的我都不会。拿着代码不知道往哪里放。求教程。
2:我想把用户输入的数据都用String接收 然后 用正则判断。如果是整形就放到int里面 是char 就放大char里面 等等 如何实现String类型向这些类型的转换!
3:下面这段代码在运行时输入性别男或 女正常 输入别的会重复。但是为什么输入了别的之后鼠标指针回不在下一行,要手动点到下一行才能再输入 否则报错 怎么回事!
import java.util.*;import java.util.regex.Matcher;import java.util.regex.Pattern;
import io.jiekou1;
public class Stringshow {
public static void main(String[] args) {
panduan ppdd=new panduan(); char age=ppdd.pdGender(); System.out.println("-------------"); System.out.println(age); }
}class panduan{ Scanner in=new Scanner(System.in); public char pdGender(){ System.out.println("输入性别"); while(true){ String x=in.next(); Pattern p=Pattern.compile("[男女]"); Matcher m=p.matcher(x); if(m.matches()){ char[] a=x.toCharArray(); return a[0]; }else{ System.out.println("输入有误,请重新输入");
} } 展开
推荐于2016-04-25
展开全部
(1)Java正则表达式不需要导入包什么的,是JDK某个版本后自带的功能。util包里的功能。
怎么书写这个问题,我不知道你再问什么。因为我看你下面也会写啊。
至于表达式,就是那些规则。基本掌握了,需要什么条件,自己构造就行了。或者可以在网上找个正则表达式的生成器。我之前有,现在好久不用了,好像是丢掉了。
(2)转成int,就用Integer的parseint方法
转成char类型的,没有这种方法,只能判断是char型后,用string的charAt(0)取。
代码如下:
public static void main(String[] args) {
String intPattern = "^[+-]?[1-9][0-9]*$|^0$";
String charPattern = "[a-zA-Z]";
String[] str = {"345","ddd","a","Z","0","12","csd","w","P"};
int[] intArray = new int[5];
char[] charArray = new char[5];
String[] other = new String[5];
int ii=0,ci=0,si=0;
for(int i=0;i<str.length;i++){
if(Pattern.matches(intPattern, str[i])){
intArray[ii] = Integer.parseInt(str[i]);
ii++;
}else if(Pattern.matches(charPattern, str[i])){
charArray[ci] = str[i].charAt(0);
ci++;
}else{
other[si] = str[i];
si++;
}
}
System.out.print("int型的数据有:");
for(int j=0;j<ii;j++){
System.out.print(intArray[j]+",");
}
System.out.print("\nchar型的数据有:");
for(int j=0;j<ci;j++){
System.out.print(charArray[j]+",");
}
System.out.print("\n其它的为:");
for(int j=0;j<si;j++){
System.out.print(other[j]+",");
}
}
(3)String x=in.nextLine();
把你里面的next换成nextLine。
不管光标在哪里,都会在下一行显示的。不过有时候也回出现些问题。
目前没有什么好的解决方法。因为java代码一般不用控制台的。所以,你以后做别的项目只有调试的时候用,其它时候不用的。
如果非要解决,你可以试着找找有没有这个相关的插件。
怎么书写这个问题,我不知道你再问什么。因为我看你下面也会写啊。
至于表达式,就是那些规则。基本掌握了,需要什么条件,自己构造就行了。或者可以在网上找个正则表达式的生成器。我之前有,现在好久不用了,好像是丢掉了。
(2)转成int,就用Integer的parseint方法
转成char类型的,没有这种方法,只能判断是char型后,用string的charAt(0)取。
代码如下:
public static void main(String[] args) {
String intPattern = "^[+-]?[1-9][0-9]*$|^0$";
String charPattern = "[a-zA-Z]";
String[] str = {"345","ddd","a","Z","0","12","csd","w","P"};
int[] intArray = new int[5];
char[] charArray = new char[5];
String[] other = new String[5];
int ii=0,ci=0,si=0;
for(int i=0;i<str.length;i++){
if(Pattern.matches(intPattern, str[i])){
intArray[ii] = Integer.parseInt(str[i]);
ii++;
}else if(Pattern.matches(charPattern, str[i])){
charArray[ci] = str[i].charAt(0);
ci++;
}else{
other[si] = str[i];
si++;
}
}
System.out.print("int型的数据有:");
for(int j=0;j<ii;j++){
System.out.print(intArray[j]+",");
}
System.out.print("\nchar型的数据有:");
for(int j=0;j<ci;j++){
System.out.print(charArray[j]+",");
}
System.out.print("\n其它的为:");
for(int j=0;j<si;j++){
System.out.print(other[j]+",");
}
}
(3)String x=in.nextLine();
把你里面的next换成nextLine。
不管光标在哪里,都会在下一行显示的。不过有时候也回出现些问题。
目前没有什么好的解决方法。因为java代码一般不用控制台的。所以,你以后做别的项目只有调试的时候用,其它时候不用的。
如果非要解决,你可以试着找找有没有这个相关的插件。
展开全部
问题1,你需要百度以下正则表达式 学习,会有很多资料供你学习。
问题2,你需要学习java中的基础类之间的转换,比如String转Integer 或String转Double。
一般写法:Integer age = Integer.parseInt(x);或者 Double age = Double.parseDouble(x);
Float和Long也和这两种差不多。
问题3,System.out.print和System.out.println 并不会移动光标,但是你输入回车光标就会移动的。
你贴的代码有一些问题,我做了修改,希望对你有所帮助
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Stringshow {
private Scanner scanner = null;//定义监听console输入对象
public static void main(String[] args) {
Stringshow ss = new Stringshow();//初始化实例
System.out.print("请输入:\n");
System.out.println("请输入性别:");
ss.scanner = new Scanner(System.in);//截获console输入字符串
String gender = ss.getGender();//判断输入是否男女
System.out.println("输入的性别为:["+ gender +"]");//输出男女
System.out.println("请输入年龄:");
ss.scanner = new Scanner(System.in);//截获console输入字符串
Integer age = ss.getAge();//判断输入是否男女
System.out.println("输入的性年龄为:["+ age +"]岁");//输出年龄
}
public String getGender() {
while (null!=scanner) {
String x = scanner.next();
Pattern p = Pattern.compile("[男女]");
Matcher m = p.matcher(x);
if (m.matches()) {//判断是否符合正则表达。
return x;
} else {
System.out.println("输入有误,请重新输入");
System.out.println("请输入性别:");
this.scanner = new Scanner(System.in);
}
}
return null;
}
public Integer getAge() {
while (null!=scanner) {
String x = scanner.next();
Pattern p = Pattern.compile("^\\d{1,3}$");
Matcher m = p.matcher(x);
if (m.matches()) {//判断是否符合正则表达。
Integer age = new Integer(0);//默认为0
age = Integer.parseInt(x);
return age;
} else {
System.out.println("输入有误,请重新输入");
System.out.print("请输入年龄:");
this.scanner = new Scanner(System.in);
}
}
return null;
}
}
问题2,你需要学习java中的基础类之间的转换,比如String转Integer 或String转Double。
一般写法:Integer age = Integer.parseInt(x);或者 Double age = Double.parseDouble(x);
Float和Long也和这两种差不多。
问题3,System.out.print和System.out.println 并不会移动光标,但是你输入回车光标就会移动的。
你贴的代码有一些问题,我做了修改,希望对你有所帮助
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Stringshow {
private Scanner scanner = null;//定义监听console输入对象
public static void main(String[] args) {
Stringshow ss = new Stringshow();//初始化实例
System.out.print("请输入:\n");
System.out.println("请输入性别:");
ss.scanner = new Scanner(System.in);//截获console输入字符串
String gender = ss.getGender();//判断输入是否男女
System.out.println("输入的性别为:["+ gender +"]");//输出男女
System.out.println("请输入年龄:");
ss.scanner = new Scanner(System.in);//截获console输入字符串
Integer age = ss.getAge();//判断输入是否男女
System.out.println("输入的性年龄为:["+ age +"]岁");//输出年龄
}
public String getGender() {
while (null!=scanner) {
String x = scanner.next();
Pattern p = Pattern.compile("[男女]");
Matcher m = p.matcher(x);
if (m.matches()) {//判断是否符合正则表达。
return x;
} else {
System.out.println("输入有误,请重新输入");
System.out.println("请输入性别:");
this.scanner = new Scanner(System.in);
}
}
return null;
}
public Integer getAge() {
while (null!=scanner) {
String x = scanner.next();
Pattern p = Pattern.compile("^\\d{1,3}$");
Matcher m = p.matcher(x);
if (m.matches()) {//判断是否符合正则表达。
Integer age = new Integer(0);//默认为0
age = Integer.parseInt(x);
return age;
} else {
System.out.println("输入有误,请重新输入");
System.out.print("请输入年龄:");
this.scanner = new Scanner(System.in);
}
}
return null;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你就仅仅想用正则表达式判断一个字符串是否符合规则, 可以i直接用静态方法
Pattern.matches(regex, input);
比如
Pattern.matches("[男女]", 男); -->返回的是true
这样简单明了, 也不需要Matcher
如果想知道Matcher是干什么的请继续追问
Pattern.matches(regex, input);
比如
Pattern.matches("[男女]", 男); -->返回的是true
这样简单明了, 也不需要Matcher
如果想知道Matcher是干什么的请继续追问
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-01-14
展开全部
java编程思想(第四版)中13.6正则表达式章节,其中讲解了java正则表达式的创建组件规则,讲得很清楚,可以参考下哦。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询