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 = "[email protected]";    //设置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 }
时间: 2024-10-14 04:24:21

Java实验项目三——递归实现字符串查找和替换操作的相关文章

Java实验项目三——简单工厂模式

Program: 请采用采用简单工厂设计模式,为某个汽车销售店设计汽车销售系统,接口car至少有方法print(), 三个汽车类:宝马.奥迪.大众 (属性:品牌,价格),在测试类中根据客户要求购买的汽车品牌, 通过接口car为客户提供相应的汽车对象. Description:通过java反射机制和Properties类的结合使用,实现工厂模式.代码如下: 1.首先是entity包中的一个接口和三个实体类 汽车接口: 1 /* 2 *Description:定义汽车接口 3 * */ 4 5 6

20135231 JAVA实验报告三:敏捷开发与XP实践

---恢复内容开始--- JAVA实验报告三:敏捷开发与XP实践 20135231 何佳 实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 2.完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(空洞的方法如“查网络”.“问同学”.“看书”等一律得0分)以及分析(从中

Eclipse之查找、替换操作

Eclipse之查找.替换操作 What(简要解释)? Eclipse中的查找.替换操作是指通过查找.替换框来进行快速的查找和替换操作. Why?(为什么该操作有必要存在?) 1.与传统的一个个去查找.替换相比,节约了大量的时间. 2.解决了代码量长且难以全部替换完的问题 How?(如何操作?) 1.两种开启方式 A.菜单法 B.快捷键法 ctrl+F 2.英文扫盲+理解 以上两种开启方式都会弹出Find/Replace框,该框的作用是进行查找和替换操作(主要是替换操作),图示如下: 执行该框的

Java实验报告(三)及总结

实验三 String类的应用 一. 实验目的 (1) 掌握类String类的使用: (2) 学会使用JDK帮助文档: 二. 实验内容 1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码.结果截图.) ① 统计该字符串中字母s出现的次数. ② 统计该字符串中子串“is”出现的次数. ③ 统计该字符串中单词“is”出现的次数. ④ 实现该字符串的倒序输出. 实验代码: package com.company; public class Mai

java实验项目报告

        JAVA课程项目报告   题目:利用java实现一个时钟的小程序 姓名:王国梁 班级:计科13-2 学号:201303011200         利用JAVA实现一个时钟的小程序 1. 软件开发的需求分析 在当今的信息时代,时钟已经成为人们生活中必不可少的应用工具 ,Java语言是当今流行的网络编程语言,它具有面向对象.与平台无关.安全.多线程 等特点.使用Java语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的.嵌入 式设备进行应用程序的开发.面向对象的开发方法是当

Shell脚本学习指南 [ 第三、四章 ] 查找与替换、文本处理工具

摘要:第三章讨论的是编写Shell脚本时经常用到的两个基本操作.第四章总共介绍了约30种处理文本文件的好用工具. 第三章 查找与替换 概括:本章讨论的是编写Shell脚本时经常用到的两个基本操作:文本查找.文本替换. 3.1  查找文本 如需从输入的数据文件中取出特定的文本行,主要的工具为grep程序.POSIX采用三种不同grep变体:grep.egrep.fgrep整合为单个版本,通过不同的选项,分别提供这三种行为模式.who | grep -F root上面使用-F选项,以查找固定字符串r

字符串查找和函数操作题目解析

1. 字符串查找 function isContain(a, b){ var aLen = a.length var bLen = b.length for(var i = 0; i < bLen; i++){ if(b[i]===a[0]){ for(var j = 1; j < aLen; j++){ if(i + j >= bLen || a[j] != b[i + j]) { break; } if(j == aLen - 1) { return i } } } } return

java实验报告三

实验三 敏捷开发与XP实践 一.实验内容 1. XP基础 2. XP核心实践 3. 相关工具 二.实验步骤 (一)敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护上的过程.软件工程包括下列领域:软件需求分析.软件设计.软件构建.软件测试和软件维护. 人们在开发.运营.维护软件的过程中有很多技术.做法.习惯和思想体系.软件工程把这些相关的技术和过程统一到一个体系中,叫“软件开发流程”.软件开发流程的目的是为了提高软件开发.运营.维护的效率,并提高软件的质量.用户

JAVA实验报告三:敏捷开发与XP实践

实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验步骤 (一)敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护上的过程.软件工程包括下列领域:软件需求分析.软件设计.软件构建.软件测试和软件维护. 人们在开发.运营.维护软件的过程中有很多技术.做法.习惯和思想体系.软件工程把这些相关的技术和过程统一到一个体系中,叫“软件开发流程”.软件开发流程的目的是为了提高软件开发.运营.维护的效率,并提高软件的质量.用户满意度.可靠性和软件的可维护性. 光