Java实验项目三——递归实现字符串查找和替换操作
Program:按照下面要求实现字符串的操作:
(1)设计一个提供下面字符串操作的类
1)编写一个方法,查找在一个字符串中指定字符串出现的次数。
2)编写一个方法,参数(母字符串,目标字符串,替换字符串)将母字符串中的所有目标字符用替换字符串替换。
3)编写一个方法,判断一个email地址是否合法。
(2)编写一个测试类,对(1)中的字符串类的方法逐一进行测试。
Description:前两个问题采用递归实现,最后一个问题,采用正则验证。代码如下:
1 /* 2 * Description:采用递归实现字符串操作类 3 * 4 * */ 5 6 package tools; 7 8 9 public class Operate { 10 11 //递归查找字符串中指定字符出现的次数 12 public static int searchEleNum(String str,String targetEle) { //参数为字符串和指定字符 13 14 if( str.indexOf(targetEle) == -1 ) { 15 return 0; 16 }else { 17 //从当前找到位置的下一个位置下标开始,截取字符串,再进行递归 18 return 1 + searchEleNum( str.substring( str.indexOf( targetEle ) + 1 ),targetEle); 19 } 20 } 21 22 23 //递归替换,将母字符串的目标字符串,替换成指定字符串 24 public static String replaceAll(String parent,String targetEle,String replaceEle ) { 25 26 //当目标元素不存在时,返回母字符串 27 if( parent.indexOf(targetEle) == -1 ) { 28 29 return parent; 30 }else { //目标元素存在时,采用截取的方式进行递归 31 32 //获取目标元素开始下标 33 int beginIndex = parent.indexOf(targetEle); 34 //获取目标元素结束位置的下一位置下标 35 int endIndex = beginIndex + targetEle.length(); 36 37 //采用递归的方法,截取目标元素在parent中的前面字符串 + 替换字符串 + 目标元素在parent中的后面字符串递归 38 //注意:substring()方法,当有两个参数时,后者所表示下标元素取不到 39 return parent.substring(0,beginIndex) + replaceEle + 40 replaceAll(parent.substring(endIndex), targetEle, replaceEle); 41 } 42 43 } 44 45 //判断email地址是否合法 46 public static boolean ifEmeil(String email) { 47 48 //字符串不为空 49 if( email != null && !"".equals(email) ) { 50 51 //采用正则验证邮箱地址合法性 52 if( email.matches( "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$" ) ) { 53 54 return true; 55 }else { 56 57 return false; 58 } 59 } 60 61 return false; 62 } 63 64 }
1 /* 2 * Description:字符串操作 3 * 4 * Written By:Cai 5 * 6 * Date Written:2017-09-25 7 * 8 * */ 9 10 package main; 11 12 import tools.Operate; 13 14 15 public class DemoThree4 { 16 17 public static void main(String args[]) { 18 19 String str1 = "hello world"; //声明并初始化一个字符串变量 20 21 String email = "1234567789@qq.com"; //设置QQ邮箱地址,验证email合法性 22 23 //测试查找字符串出现次数的方法 24 System.out.println( str1 + "中,字符‘l’出现的次数为:" + Operate.searchEleNum(str1, "l") ); 25 //测试替换指定字符的方法 26 System.out.println( str1 + "中,替换所有字符‘l’为字符6:" + Operate.replaceAll(str1, "l", "6") ); 27 28 //验证email地址合法性 29 System.out.println( Operate.ifEmeil(email) ); 30 System.out.println( Operate.ifEmeil(str1)); 31 32 } 33 34 }
初学小白,请多指教!