请问如何编写一个java程序来判断字符串类型是否匹配啊?
如"a*"代表以字符a开头的字符串,"A??"代表以字符A开头长度为三的字符串.
这是一个很简单的问题,可我是一个刚刚接触JAVA的学生,感觉上述问题很复杂,要分析很多种情况.如字符串"as?ds*dert*sdl?rf*ad?jf"(*代表零个或多个字符).我已经试过好几次了,还是分析不清楚啊!希望高手们能帮我一下.谢谢啊!!!!
如"a*"代表以字符a开头的字符串,"A??"代表以字符A开头长度为三的字符串.
这是一个很简单的问题,可我是一个刚刚接触JAVA的学生,感觉上述问题很复杂,要分析很多种情况.如字符串"as?ds*dert*sdl?rf*ad?jf"(*代表零个或多个字符).我已经试过好几次了,还是分析不清楚啊!希望高手们能帮我一下.谢谢啊!!!!
public boolean startsWith(String prefix)测试此字符串是否以指定的前缀开始。 参数:
prefix - 前缀。
返回:
如果该参数表示的字符序列是此字符串表示的字符序列的前缀,则为 true;否则为 false。还要注意,如果参数是空字符串,或者等于由 equals(Object) 方法确定的 String 对象,则返回 true。
从以下版本开始:
1. 0
as?ds*dert*sdl?rf*ad?j"我还是分析不出来啊?一点规律都没有啊.再请各位高手帮帮忙啊??多谢了
String string;
//需要的其他方法及成员的定义
//构造函数
public Boolean isLike(String regex){...\}
}
new myString("abcd").isLike("a*") ->true
new myString("ABCD").isLike("ABC*") ->true
这就是原题啊,我真的很想知道复杂的字符串该如何分析啊
System.out.println(new MyString("as?ds....dert.....sdl?rf____ad?j").isLike("as?ds*dert*sdl?rf*ad?j"));
}
}class MyString {
private String myString; public MyString(String myString) {
this.myString = myString;
} public boolean isLike(String regex){
regex = Pattern.quote(regex);
regex = regex.replace("*", "\\E.*\\Q").replace("?", "\\E.\\Q");
return myString.matches(regex);
}
}
private String myString; public MyString(String myString) {
this.myString = myString;
} public boolean isLike(String regex){
regex = Pattern.quote(regex);
regex = regex.replaceAll("\\*[?*]*", "\\\\E.*\\\\Q")
.replace("?", "\\E.\\Q")
.replace("\\Q\\E", ""); // 这一行可以取消掉,会更快一些
return myString.matches(regex);
}
}
呵呵,非常非常感谢您啊.捆扰我两天的问题终于解决了,心情很爽嘞.