黑马程序员技术交流社区
标题:
正则表达式问题
[打印本页]
作者:
怀念子龙
时间:
2015-4-11 10:46
标题:
正则表达式问题
写一个正则表达式, 判断一个两位数 如“11”,“21” ,若两个数字相同则返回false ,不同则返回true,
比如“11”则返回false,“21”则返回true 。
请不要用!false=true 这种做法。
作者:
liaohongjie
时间:
2015-4-11 10:56
if(!String.matches(".\\1"))
作者:
liaohongjie
时间:
2015-4-11 10:57
应该是这样,使用到 组与叠词 的概念
作者:
liaohongjie
时间:
2015-4-11 10:59
写错了,if(!String.matches("(.)\\1")) ,如果是判断多个就是 if(!String.matches("(.)\\1+"))
作者:
lurenge
时间:
2015-4-11 11:29
我也在求答案啊
作者:
怀念子龙
时间:
2015-4-11 12:11
liaohongjie 发表于 2015-4-11 10:56
if(!String.matches(".\\1"))
我已经注明了不能用!false=true 这种做法, 因为这是我从另一个题目中单独抽取出来的一个关键问题。如果用!的话就不能用在那个题目中了。
作者:
1017161726
时间:
2015-4-11 12:34
匹配是否相同,就该用match,。你说的 !false=true,应该是不要直接判断第一位是否和第二位相同。
作者:
major2015
时间:
2015-4-11 13:54
Pattern.compile("(\\d)\\1")
作者:
wkz_crystal
时间:
2015-4-11 20:32
本帖最后由 wkz_crystal 于 2015-4-11 20:34 编辑
晕倒,相同返回false,不同返回true,还真是有点难呢?自己写一个类继承Pattern类算了,然后覆写掉mathches(参数1,参数2);的方法……
让其相同返回false,不同返回true就好!其他方法没有想到!
作者:
wkz_crystal
时间:
2015-4-11 20:52
本帖最后由 wkz_crystal 于 2015-4-11 20:56 编辑
哥们:突然我想到了用三元运算符的方式就能over了!
请看代码:我写了一个具体的例子:
import java.util.regex.*;
class WkzTestDemo
{
public static void main(String[] args)
{
ifSame(66);
}
public static void ifSame(int number)
{
//把数字装换成为字符串,方便主体内容的判断
String str=String.valueOf(number);
//按照要求需要判断的正则表达式方法:
String reg="^(\\d)\\1{1}$";
if (number>0 && str.length()!=2)
{
System.out.println("请输入位数为:两位数的正整数!");
}else
{
//这里用了三元运算符进行判断如果是相同,返回假,如果是假,返回真!
boolean flag=Pattern.matches(reg,str)?false:true;
//做判断提示用的!
if (flag==false)
{
System.out.println("这个数字:"+number+" 其位数上的值是相同的!");
}else
{
System.out.println("这个数字:"+number+" 其位数上的值是不相同的!");
}
}
}
}
复制代码
作者:
sisel
时间:
2015-4-11 21:45
Pattern p=Pattern.compile("(\\d)\\1{1}");p.matches(字符串)
作者:
liaohongjie
时间:
2015-4-14 11:28
上面已经有答案了,最好用正则引擎
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2