您的位置:程序门 -> java -> j2se / 基础类



字符串通配府匹配算法


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


字符串通配府匹配算法
发表于:2007-01-03 15:03:07 楼主
程序要求实现以下功能:
1。提示用户输入两个字符串,
2。读入用户输入的两个字符串
3。根据读入的两个字符串进行匹配,例如:
*i*tooer,dietooer   则说明两字符串匹配,返回true.
co*de,acode   则说明两字符串不匹配,返回false.

请问这个功能用java语言如何实现?
发表于:2007-01-03 15:04:221楼 得分:0
补充一下,*表示这个地方可以有0个或多个字符。
发表于:2007-01-03 15:45:552楼 得分:0
有些难度,(如果2个字串都含有*,)
不知道,我这个才采鸟说的对不对
如果只有一个有*,好像用正则表达式就可以了,我1年多,没有看java了
如果2个都有*,我想可能按*划分成多个串进行匹配
发表于:2007-01-03 16:00:263楼 得分:0
用正则表达式?能否说得详细些呢   ?
发表于:2007-01-03 16:12:594楼 得分:0
public   static   boolean   isregex(string   s,string   reg)//s为原字符串,reg为匹配字符串
{
return   s.matches(reg.replaceall( "\\* ",   ".* "));
}

发表于:2007-01-03 16:25:115楼 得分:0
楼上意思有偏差吧       用户并没有输入“*”
发表于:2007-01-03 16:34:576楼 得分:0
谢谢jy02209334,正则表达式的方法我试过了,是成功地。但是当字符串中有两个或两个以上星号时,这个方法就出错了。如何解决这个问题呢?
发表于:2007-01-03 16:45:187楼 得分:0
把具体例子发出来看看
发表于:2007-01-03 18:24:538楼 得分:0
刚才我又运行了一次程序,发现当字符串中有多个 "* "时也能运行,但问题是,当 "* "出现在首位时,运行程序就出错了。
发表于:2007-01-03 20:00:469楼 得分:0
import   java.util.regex.*;

public   class   twowords
{
public   static   void   main(string[]   args)
{
if(args.length!=2)system.out.println( "wrong   number   of   words ");
pattern   p=pattern.compile(args[0]);
matcher   m=p.matcher(args[1]);
if(m.matches())system.out.println( "匹配 ");
}
}
运行:
java   twowords   .*ab.*dd   fdsfdsjab**dd
打印:
匹配
我不知道lz说的*号是什么意思,是正则式中的星号还是普通的星号?
还有就是运行   java   twowords   \\*ab.*dd   *abw**dd不会打印匹配,这是什么原因啊?我觉得应该是匹配的啊
发表于:2007-01-03 22:49:1210楼 得分:0
我说的 "* "是正则式中的星号


快速检索

最新资讯
热门点击