需求:从一个指定的字符串中,查找是否存在指定的关键字,有则将其按顺序找出。例如:从"我在开会,一会打电话,然后去吃饭" 查找是否含有 "教研"、"上课"、"开会"、"打电话"、"吃饭" ,结果是查找到"开会" "打电话" "吃饭"。

分析:可以简单的进行字符串扫描,对每一个关键字进行匹配,开始位置为0,扫描到则下次开始的位置加上字符串的长度。

代码如下:

package cc.dc.test;

import java.util.ArrayList;

import java.util.List;

public class Test2 {

//记录找到的关键字

private static List keywordsList = new ArrayList();

public static void main(String[] args) {

//待查找的字符串

String content = "我在开会,一会打电话,然后去吃饭";

//搜索的关键字

String[] subStrings = {"打电话","开会","吃饭"};

getRemindString(content,subStrings);

for(String str:keywordsList){

System.out.print(str+"--");

}

}

private static void getRemindString(String content, String[] subStrings) {

int[] array = new int[content.length()];

for (int i = 0; i < array.length; i++) {

//默认设置为10000,最后判断不是10000的位置就是关键字

array[i] = 10000;

}

for (int j = 0; j < subStrings.length; j++) {

String findStr = subStrings[j];

// 待查找字符串的长度

int findLength = findStr.length();

for (int i = 0; i < content.length();) {

if ((findLength + i) <= content.length()

&& content.substring(i, findLength + i).equals(findStr)) {

// 查找到的位置

//System.out.println("find " + i + "--"+ content.substring(i, findLength + i));

//找到,则设置其在subStrings的位置

array[i] = j;

// 找到则下次查找的位置+字符长度

i += findLength;

} else {

// 没有找到则从下一个位置开始查找

i++;

}

if (i + findLength > content.length()) {

// 如果下一次查找的endIndex>str.length()则说明不可能再有该字符串了

break;

}

}

}

for (int i = 0; i < array.length; i++) {

//所有不是10000的位置都是查找到关键字的位置

if (array[i] != 10000) {

//System.out.println("--" + subStrings[array[i]] + "--");

keywordsList.add(subStrings[array[i]]);

}

}

}

}

结果如下:

java 查找关键字_java实现简单的关键字查找相关推荐

  1. java transient 关键字_java中的transient关键字详解

    前言 说实话学了一段时间java的朋友对于transient这个关键字依旧很陌生基本没怎么用过,但是transient关键字在java中却起到了不可或缺的地位!如果要说讲到,我觉得最可能出现的地方是I ...

  2. java异常类关键字_Java中的异常处理关键字是什么?

    java异常处理中使用了四个关键字. throw:有时我们明确要创建异常对象然后抛出它来停止程序的正常处理.throw关键字用于向运行时抛出异常来处理它. throws:当我们在方法中抛出任何已检查的 ...

  3. 什么是java的关键字_java中常见的关键字

    什么是关键字呢? 概述:关键字就是在java语言中赋予特殊含义的单词 特点:1.组成的关键字的单词全是小写 2.常见的代码编辑器中,对关键字都有特殊的颜色标记 比如在idea中对关键字都有特殊的颜色标 ...

  4. java gui 日历_Java实现简单日历小程序 Java图形界面小日历开发

    今天给大家介绍一下如何用Java swing开发一款简单的小日历,下面我们来看代码: 首先创建一个CalendarBean类,用于基本的日期计算: package other1; import jav ...

  5. java 日历界面_Java实现简单日历小程序 Java图形界面小日历开发

    今天给大家介绍一下如何用java swing开发一款简单的小日历,下面我们来看代码: 首先创建一个calendarbean类,用于基本的日期计算: package other1; import jav ...

  6. java银行取款_Java写简单的银行取钱系统

    按ctrl+a 选中所有的代码删除,再复制下面的代码输入即可 import java.util.Scanner; public class 简单的银行取钱系统 //class的名字可以自己新建和这个一 ...

  7. java static关键字_Java基础:static关键字作用总结

    前言 之前讲到final关键字的作用是每次面试的时候我必问求职者的两个问题之一,另外一个问题就是文本会写到的static.final和static一样,都是一个小问题可以看到一个人的基础是否扎实以及平 ...

  8. java中的me关键字_java中的volatile关键字

    一.详细解释 在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉. Java语言是支持多线程的,为了解决线程并 ...

  9. java修饰类的关键字_JAVA中的修饰关键字

    今天我们来说说JAVA中的修饰关键字. 常用的有: 1.final 关键字 修饰成员变量:a. 必须初始化值. b. 被fianl修饰的成员变量赋值,有两种方式:1.直接赋值 2.全部在构造方法中赋初 ...

最新文章

  1. 安装win下的Anaconda ----针对python3.6.4版本
  2. 06 Java程序员面试宝典视频课程之Javascript
  3. asp.net利用Web Service实现短信发送致手机
  4. java中String,int,Integer,char、double类型转换
  5. 工作组环境下WPAD部署的另类解决--WINS解析
  6. Linux中常用的查找文件的命令
  7. worksteal thread pool
  8. 大话数据结构——查找
  9. mysql 数据库锁一般处理
  10. 亚马逊狂发智能硬件新品:全新音箱、微波炉、挂钟、家庭卫士
  11. 常用chrome插件常用FireFox插件
  12. [LeetCode] Remove Duplicates from Sorted List 移除有序链表中的重复项
  13. InletexEMC共享Windows屏幕的永久免费软件
  14. hzk16 8 16c语言示例,[资料共享]汉字库HZK16的使用,强烈推荐: 486959c6.rar
  15. 系统学习深度学习(十六)--Overfeat
  16. 心智与认知(1): 反馈循环(Feedback loop)
  17. hive卡在最后一个reduce过不去_数据倾斜
  18. configure文件的生成
  19. 【JAVA虚拟机】java虚拟机
  20. JSP开发模型与MVC设计模型

热门文章

  1. 最容易理解最全的快排的最好时间复杂度分析
  2. OpenStack集成Docker
  3. 五个可以永远相信的神仙网站推荐
  4. 【8014】互联网产品经理,全方位入门,图书推荐
  5. Android Q 双屏异显
  6. 【洛谷P3390】 矩阵快速幂(模板)
  7. 谷歌眼镜秀出时尚风采:对面的女孩看过来
  8. PNG图片压缩无损,但解析原理呢?
  9. 天龙八部天荒古镜服务器无法响应,《天龙八部》天外江湖通天塔玩法攻略
  10. 用十种编程语言开发计算器应用-第九篇-抖音小程序