首页 > 代码库 > java模式匹配以及相应的例题
java模式匹配以及相应的例题
public class PatternMatching { /* * 该方法用来判断子串是否存在于父串中 若存在返回true,否则返回false searchMe表示父串,substring表示子串 */ public boolean match(String searchMe, String substring) { boolean flag = true; // flag表示标记变量,用来判断是否匹配成功 int max = searchMe.length() - substring.length();// max为偏移量 for (int i = 0; i <= max; i++) { flag = true; for (int j = 0; j < substring.length(); j++) { if (searchMe.charAt(i + j) != substring.charAt(j)) { flag = false;// 说明匹配失败 } } if (flag) {// 说明匹配成功 break; } } return flag; } /* 这个方法用来打印出子串在父串第一次出现的索引位置 */ public int matchIndex(String searchMe, String substring) { boolean flag = true; // flag表示标记变量,用来判断是否匹配成功 int index = 0;// index这个变量用来表示子串在父串中第一次出现的索引位置 int max = searchMe.length() - substring.length();// max为偏移量 for (int i = 0; i <= max; i++) { flag = true; for (int j = 0; j < substring.length(); j++) { if (searchMe.charAt(i + j) != substring.charAt(j)) { flag = false;// 说明匹配失败 } } if (flag) {// 说明匹配成功 index = i; break; } } return index; } /* 这个方法用来求子串在父串中出现的所有位置 */ public StringBuffer matchAllIndex(String searchMe, String substring) { boolean flag = true; // flag表示标记变量,用来判断是否匹配成功 int max = searchMe.length() - substring.length();// max为偏移量 StringBuffer index = new StringBuffer("子串在父串中出现的所有位置为:"); for (int i = 0; i <= max; i++) { flag = true; for (int j = 0; j < substring.length(); j++) { if (searchMe.charAt(i + j) != substring.charAt(j)) { flag = false;// 说明匹配失败 } } if (flag) {// 说明匹配成功 index.append(i + " ");// 用StringBUffer特有的方法append来拼接子串在父串出现的首位字母的所有索引位置 continue; } } return index; } /* 这个方法用来将父串中的子串替换成指定的字符串*/ public String replace(String searchMe, String substring,String replacation){ boolean flag = true; // flag表示标记变量,用来判断是否匹配成功 int max = searchMe.length() - substring.length();// max为偏移量 for (int i = 0; i <= max; i++) { flag = true; for (int j = 0; j < substring.length(); j++) { if (searchMe.charAt(i + j) != substring.charAt(j)) { flag = false;// 说明匹配失败 } } if (flag) {// 说明匹配成功 searchMe = searchMe.replace(substring, replacation); continue; } } return searchMe; } }
下面是测试类:atternMatchingTest
public class PatternMatchingTest { public static void main(String[] args) { String fatherStr = "Look for a substring in mesubstring";// 父串 String sonStr = "subs";// 子串 String replacation = "aaaa"; /* 这个打印用来判断是否匹配成功 */ System.out.println(new PatternMatching().match(fatherStr, sonStr)); /*这个打印用来打印出子串在父串第一次出现的索引位置*/ System.out.println(new PatternMatching().matchIndex(fatherStr, sonStr)); /*这个打印用来打印子串在父串中出现的所有位置*/ System.out.println(new PatternMatching().matchAllIndex(fatherStr, sonStr)); /*这个打印用来将父串中的子串替换成指定的字符串*/ System.out.println(new PatternMatching().replace(fatherStr, sonStr, replacation)); } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。