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 }

 

posted @ 2017-09-26 22:19  空芯菜  阅读(3648)  评论(0编辑  收藏  举报