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));
 }
}

java模式匹配以及相应的例题

时间: 2024-12-12 19:06:50

java模式匹配以及相应的例题的相关文章

关于Java日期的两道例题

例题1查找十天前的日期. package date; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Scanner; public class Date01 { public static void main(String[] args) throws ParseExcept

java中类型转化及例题

1.自动转换类型:容量小的数据类型与容量大的数据类型做运算,容量小的会自动转换为容量大的数据类型. 2.自动转换:char,byte,short=>int=>long=>float=>double.Char,byte,short之间做运算默认的是int类型. 3.强制类型转换:容量大的转换为容量小的,要使用强制类型转换符:(),可能导致精度损失. 例:long l1=121345; Int m1=(int)l1; System.out.println(ml) 4.字符串(strin

Java学习(五)例题

一.需求分析 做一个jsp页面,动态显示信息表的内容. 1.  做一个实体类:StudentInfo (包含4个字段) 2.  如图模拟生成3条数据,本质上就是new StudentInfo 3个实例, 每个实例代表一行记录(后面这3条记录放到数据库,本例暂时不处理) 3.  处理这3条数据的过程,不用考虑界面(采用java代码与jsp UI页面分离) 编写一个类和方法,处理数据问题,返回值为List<StudentInfo> 把3条数据(StudentInfo)也就是3个StudentInf

java cmd常用命令

熟悉Java的常用命令 面试例题11:使用jar命令. 请使用jar命令,将test文件夹压缩成.jar文件,并简述其压缩包的结构. 考点:对于Java程序员来说,更多情况下是使用集成Java开发工具,例如JBuilder.Eclipse等,而对于最基本的Java编译和常见的命令行工具往往都不熟悉,这个面试例题主要考查求职者对于Java命令行基本工具的使用,从而了解求职者对Java编程的熟悉程度. 出现频率:★★★ 解析 熟练的Java开发者应该掌握常用的Java命令行工具.求职者应该熟练掌握j

JAVA基础汇总及例题详解

java语言的一个核心: jdk, java development kits---面向开发人员 jre, java Runtime Environment---服务器上 java虚拟机---(以字节码为指令的CPU)---*.class java编译器-->字节码-->类加载器进行验证-->虚拟机运行 垃圾回收机制 public class ...{ int a = 1; } c/c++垃圾回收由程序员去运行 java编程语言(一门纯面向对象)的特点: 1, 面向对象  封装  继承

Java中正则表达式、模式匹配与信息抽取

引言 记得几年前在做网页爬虫后的信息抽取时,针对网页源码中隐藏的要提取的信息,比如评论.用户信息等属性信息,直接利用HtmlParser得到.如此做倒是简单,不过利用的是网页的规范的tag标记.其实java中的正则表达式也可以用来实现这一功能.而且对于非tag的一些有规律的系列组合的字符串,正则表达式更能够发挥其卓越的功能.大学时候曾经就接触过正则表达式,不过只是略知皮毛.现在也无心学习,上面的链接网页有一个比较清晰的介绍可供参考.下面只是陈述一下自己在实验过程中利用正则表达式来进行模式匹配以抽

java编程基础知识及常见例题

⒈标识符: 只能包含数字.字母.下划线.$,并且不能以数字开头.语义直观规范 驼峰法则: 如:方法名.变量名采用驼峰法则 帕斯卡命名法: 如: 类.接口.枚举采用帕斯卡命名法包名:网址倒写,com.网址名.工程名.包名,,所有字母都小写 ⒉数据类型:⑴基本数据类型---按值传递,传递副本,修改副本不会影响原有数据    ① java里面有8种基本数据类型:int-整型,long-长整型,short-短整型,byte-字节    ②char-字符,float-单精度浮点型,,double-双精度浮

Java如何从文件中打印与给定模式匹配的所有字符串?

在Java编程中,如何从文件中打印与给定模式匹配的所有字符串? 以下示例显示了如何使用Util.regex类的Patternname.matcher()方法从文件中打印与给定模式匹配的所有字符串. package com.yiibai; import java.util.regex.*; import java.io.*; public class PatternMatchingFromFile { public static void main(String[] args) throws IO

Java &amp; Groovy &amp; Scala &amp; Kotlin - 20.Switch 与模式匹配

Overview 本章主要介绍高级条件语句中的 switch 语句以及其增强版的模式匹配. Java 篇 Switch 特点 Java 中 switch 语句功能类似 if,但是 switch 主要用在多条件分支上. switch 语句由 case 分支和 default 组成,case 分支用于检查条件,且参数必须为常量,default 用于执行当任何 case 分支都不匹配时执行的语句. switch 语句 在 Java 1.7 以前只支持基本类型,Java 1.7 开始支持 String