VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1240|回复: 10

字符串通配府匹配算法

[复制链接]

2

主题

8

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-1-20 18:40:01 | 显示全部楼层 |阅读模式
程序要求实现以下功能:
1。提示用户输入两个字符串,
2。读入用户输入的两个字符串
3。根据读入的两个字符串进行匹配,例如:
*i*tooer,dietooer 则说明两字符串匹配,返回true.
co*de,acode 则说明两字符串不匹配,返回false.

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

使用道具 举报

2

主题

8

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
 楼主| 发表于 2020-1-29 18:27:01 | 显示全部楼层
补充一下,*表示这个地方可以有0个或多个字符。
回复

使用道具 举报

0

主题

7

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-1-30 21:09:01 | 显示全部楼层
有些难度,(如果2个字串都含有*,)
不知道,我这个才采鸟说的对不对
如果只有一个有*,好像用正则表达式就可以了,我1年多,没有看java了
如果2个都有*,我想可能按*划分成多个串进行匹配
回复

使用道具 举报

2

主题

8

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
 楼主| 发表于 2020-1-31 05:45:02 | 显示全部楼层
用正则表达式?能否说得详细些呢 ?
回复

使用道具 举报

0

主题

12

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-1-31 11:45:01 | 显示全部楼层
public static boolean isRegex(String s,String reg)//s为原字符串,reg为匹配字符串
{
        return s.matches(reg.replaceAll("\\*", ".*"));
}

回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-31 19:36:01 | 显示全部楼层
楼上意思有偏差吧   用户并没有输入“*”
回复

使用道具 举报

2

主题

8

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
 楼主| 发表于 2020-2-1 07:27:01 | 显示全部楼层
谢谢chen96542,正则表达式的方法我试过了,是成功地。但是当字符串中有两个或两个以上星号时,这个方法就出错了。如何解决这个问题呢?
回复

使用道具 举报

0

主题

12

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-2-1 12:45:01 | 显示全部楼层
把具体例子发出来看看
回复

使用道具 举报

2

主题

8

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
 楼主| 发表于 2020-2-6 16:15:01 | 显示全部楼层
刚才我又运行了一次程序,发现当字符串中有多个"*"时也能运行,但问题是,当"*"出现在首位时,运行程序就出错了。
回复

使用道具 举报

3

主题

17

帖子

14.00

积分

新手上路

Rank: 1

积分
14.00
发表于 2020-2-8 18:30:01 | 显示全部楼层
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不会打印匹配,这是什么原因啊?我觉得应该是匹配的啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表