日期:2014-05-20  浏览次数:20688 次

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

请问这个功能用java语言如何实现?


------解决方案--------------------
有些难度,(如果2个字串都含有*,)
不知道,我这个才采鸟说的对不对
如果只有一个有*,好像用正则表达式就可以了,我1年多,没有看java了
如果2个都有*,我想可能按*划分成多个串进行匹配

------解决方案--------------------
public static boolean isRegex(String s,String reg)//s为原字符串,reg为匹配字符串
{
return s.matches(reg.replaceAll( "\\* ", ".* "));
}


------解决方案--------------------
楼上意思有偏差吧 用户并没有输入“*”
------解决方案--------------------
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不会打印匹配,这是什么原因啊?我觉得应该是匹配的啊