java 查找关键字_java实现简单的关键字查找
需求:从一个指定的字符串中,查找是否存在指定的关键字,有则将其按顺序找出。例如:从"我在开会,一会打电话,然后去吃饭" 查找是否含有 "教研"、"上课"、"开会"、"打电话"、"吃饭" ,结果是查找到"开会" "打电话" "吃饭"。
分析:可以简单的进行字符串扫描,对每一个关键字进行匹配,开始位置为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实现简单的关键字查找相关推荐
- java transient 关键字_java中的transient关键字详解
前言 说实话学了一段时间java的朋友对于transient这个关键字依旧很陌生基本没怎么用过,但是transient关键字在java中却起到了不可或缺的地位!如果要说讲到,我觉得最可能出现的地方是I ...
- java异常类关键字_Java中的异常处理关键字是什么?
java异常处理中使用了四个关键字. throw:有时我们明确要创建异常对象然后抛出它来停止程序的正常处理.throw关键字用于向运行时抛出异常来处理它. throws:当我们在方法中抛出任何已检查的 ...
- 什么是java的关键字_java中常见的关键字
什么是关键字呢? 概述:关键字就是在java语言中赋予特殊含义的单词 特点:1.组成的关键字的单词全是小写 2.常见的代码编辑器中,对关键字都有特殊的颜色标记 比如在idea中对关键字都有特殊的颜色标 ...
- java gui 日历_Java实现简单日历小程序 Java图形界面小日历开发
今天给大家介绍一下如何用Java swing开发一款简单的小日历,下面我们来看代码: 首先创建一个CalendarBean类,用于基本的日期计算: package other1; import jav ...
- java 日历界面_Java实现简单日历小程序 Java图形界面小日历开发
今天给大家介绍一下如何用java swing开发一款简单的小日历,下面我们来看代码: 首先创建一个calendarbean类,用于基本的日期计算: package other1; import jav ...
- java银行取款_Java写简单的银行取钱系统
按ctrl+a 选中所有的代码删除,再复制下面的代码输入即可 import java.util.Scanner; public class 简单的银行取钱系统 //class的名字可以自己新建和这个一 ...
- java static关键字_Java基础:static关键字作用总结
前言 之前讲到final关键字的作用是每次面试的时候我必问求职者的两个问题之一,另外一个问题就是文本会写到的static.final和static一样,都是一个小问题可以看到一个人的基础是否扎实以及平 ...
- java中的me关键字_java中的volatile关键字
一.详细解释 在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉. Java语言是支持多线程的,为了解决线程并 ...
- java修饰类的关键字_JAVA中的修饰关键字
今天我们来说说JAVA中的修饰关键字. 常用的有: 1.final 关键字 修饰成员变量:a. 必须初始化值. b. 被fianl修饰的成员变量赋值,有两种方式:1.直接赋值 2.全部在构造方法中赋初 ...
最新文章
- 安装win下的Anaconda ----针对python3.6.4版本
- 06 Java程序员面试宝典视频课程之Javascript
- asp.net利用Web Service实现短信发送致手机
- java中String,int,Integer,char、double类型转换
- 工作组环境下WPAD部署的另类解决--WINS解析
- Linux中常用的查找文件的命令
- worksteal thread pool
- 大话数据结构——查找
- mysql 数据库锁一般处理
- 亚马逊狂发智能硬件新品:全新音箱、微波炉、挂钟、家庭卫士
- 常用chrome插件常用FireFox插件
- [LeetCode] Remove Duplicates from Sorted List 移除有序链表中的重复项
- InletexEMC共享Windows屏幕的永久免费软件
- hzk16 8 16c语言示例,[资料共享]汉字库HZK16的使用,强烈推荐: 486959c6.rar
- 系统学习深度学习(十六)--Overfeat
- 心智与认知(1): 反馈循环(Feedback loop)
- hive卡在最后一个reduce过不去_数据倾斜
- configure文件的生成
- 【JAVA虚拟机】java虚拟机
- JSP开发模型与MVC设计模型