zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    DOM获取分辨率
    DataSnap被动断开客户端及主动断开客户端
    DOM的常用操作
    Apache Shiro官方的教程和文档
    maven jar 导入本地仓库
    Media Queries 媒体查询详解
    flash遮挡DIV元素的问题总结
    CSS样式字体 自动换行(强制换行)与强制不换行
    【推荐】万能清除浮动样式
    响应式网页设计
  • 原文地址:https://www.cnblogs.com/caizhen/p/7599315.html
Copyright © 2011-2022 走看看