【求助】对两个不同的字符串怎么进行模糊匹配

Aomr_Dark 2017-05-05 05:19:17
比如现在有两个字符串
String s1 ="12345****54321";
String s2="123458899998854321";

然后要得出匹配成功的结果 |
请教一下这样的方法怎么写
...全文
931 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hefei19881002 2017-05-06
  • 打赏
  • 举报
回复
把字符串转成字符数组然后遍历判断。跳过* 取出字符转成int判断是否相等。
HinanaiTenshi 2017-05-05
  • 打赏
  • 举报
回复
如果只有*那好办啊: 1. 用正则匹配带*字符串,把开头-连续数字,连续数字-结尾的两段抽取成前缀后缀两段字符串 2. 用字符串的startWith和endWith两个api做匹配,都符合就算匹配。
giya射手 2017-05-05
  • 打赏
  • 举报
回复
个人见解,感觉有点复杂;期待有简单的算法来纠正

public static String fuzzyEqual(String s1, String s2) {
    	String str;
		//*在首位的情况
    	if(s1.indexOf("*")==1){
    		str = s1.substring(s1.lastIndexOf("*")+1);
    		if(s2.contains(str))
    			return "成功";
    		else
    			return"失败";
    	}
    	//*在末尾的情况
    	if(s1.indexOf("*")>1){
    		str = s1.substring(0, s1.indexOf("*"));
    		if(s2.contains(str))
    			return "成功";
    		else
    			return "失败";
    	}
    	//*在中间的情况
    	if(s1.indexOf("*")>1&&s1.lastIndexOf("*")<s1.length()){
    		str = s1.substring(0,s1.indexOf("*"));
    		String str2 = s1.substring(s1.lastIndexOf("*")+1);
    		if(s2.contains(str)&&s2.contains(str2))
    			return "成功";
    		else
    			return "失败";
    	}
		return "失败";
	}
Aomr_Dark 2017-05-05
  • 打赏
  • 举报
回复
引用 2 楼 qq_27333559 的回复:
你要他们匹配到什么程度算成功呢?能具体一点要求吗?
就是 连续的明文字符 要求匹配上,只要一个出错就返回错误,但是 参数长短和*所在的位置不是固定的
giya射手 2017-05-05
  • 打赏
  • 举报
回复
你要他们匹配到什么程度算成功呢?能具体一点要求吗?
Aomr_Dark 2017-05-05
  • 打赏
  • 举报
回复
求救,最近做的项目要考虑到数据匹配的问题,但是数据的格式不一致

51,410

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧