java统计某个字符出现的次数,java 统计文章中每个单词出现的次数
目录
1.实现统一资源定位器文档的拷贝2.实现关键词在文档的查询功能3.显示效果该代码简易实现了获取统一资源定位器地址后对文档进行关键字统计的功能。具体的自己看吧
1.实现URL文档的拷贝
导入Java。util。扫描仪;导入Java。util。正则表达式。图案;导入Java。网。*;导入Java。io。*;导入javax。挥棒。*;导入javax。挥棒。ui管理器;导入Java。awt。*;导入javax。挥棒。普拉夫。font uire源;公共类TestURL { static String getuser keywords=null;//获取用户选择的关键词public static void main(String[]args){ File copy File=new File( d :/new test。txt’);InputStream in=nullBufferedReader br=null//字符流写入BufferedWriter out=null//字符流写出字符串urladdress=null//获取用户输入的统一资源定位器地址请尝试{用户界面管理器。put( joptionpane。邮件字体)、新字体资源(新字体(宋体,字体。粗体,20)));string getuser URL=joptionpane。showinputdialog(null, URL地址:n ,输入统一资源定位器地址,JOptionPane .PLAIN _ MESSAGE);字符串URL addr=getuser URL。子字符串(getuser URL。lastindexof(/);复制文件=新文件( d :/ URL addr);getuser keywords=joptionpane。showinputdialog(null,关键字查询:n ,关键字,JOptionPane .PLAIN _ MESSAGE);//URL URL=new URL( http://新闻。中央电视台。com/2019/06/19/artihqziopwz 2 cotyhfw 063 b 190619。shtml’);//获取统一资源定位器地址URL url=新URL(getUserURL);//获取统一资源定位器地址HttpURLConnection urlC=(HttpURLConnection)URL。打开连接();//由统一资源定位器获取通过对象in=urlc。getinputstream();//获取urlC的输入流br=新的BufferedReader(新的InputStreamReader(in,“UTF-8”);//将全球资源定位器(统一资源定位器)默认的字节流转成字符流,并以UTF-8的格式写入文档out=新缓冲写入器(新文件写入器(复制文件));//将获取的信息写入到TestURL文档中字符串长度=nullwhile ((length=br.readLine())!=null){ out。write(html 2文本(长度));出去。newline();} }捕捉(异常e){ e . getmessage();}最后{System.out.println(拷贝完成!);试试{如果(在!=null){ in。close();}如果(出!=null){ out。close();}如果(br!=null){ br。close();} }捕捉(异常ee){ ee。getmessage();} }文本文件搜索search=新文本文件搜索();搜索SearchKeyword(copyfile,getuser keywords);} //程序到这就结束了,下面是不同方法实现对超文本标记语言的剔除功能,可以忽略//从超文本标记语言中提取纯文本,这部分其实没什么用,最开始想截取超文本标记语言中的字符串,后面检查也没啥用,就没删除,保留着公共静态字符串html 2文本(字符串输入字符串){ String html str=输入字符串;//含超文本标记语言标签的字符串string textStr=Java。util。正则表达式。模式p _ scriptJava。util。正则表达式。matcher m _ scriptJava。util。正则表达式。模式p _ styleJava。util。正则表达式。matcher m _ styleJava。util。正则表达式。模式p _ htmljava.util.regex.Mat
cher m_html;try {String regEx_script = "<[\s]*?script[^>]*?>[\s\S]*?<[\s]*?\/[\s]*?script[\s]*?>"; // 定义script的正则表达式{或<script[^>]*?>[\s\S]*?<\/script> String regEx_style = "<[\s]*?style[^>]*?>[\s\S]*?<[\s]*?\/[\s]*?style[\s]*?>"; // 定义style的正则表达式{或<style[^>]*?>[\s\S]*?<\/style> String regEx_html = "<[^>]+>"; // 定义HTML标签的正则表达式 p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE); m_script = p_script.matcher(htmlStr); htmlStr = m_script.replaceAll(""); // 过滤script标签 p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE); m_style = p_style.matcher(htmlStr); htmlStr = m_style.replaceAll(""); // 过滤style标签 p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE); m_html = p_html.matcher(htmlStr); htmlStr = m_html.replaceAll(""); // 过滤html标签 textStr = htmlStr; } catch (Exception e) {System.err.println("Html2Text: " + e.getMessage()); }//剔除空格行textStr=textStr.replaceAll("[ ]+", " ");textStr=textStr.replaceAll("(?m)^\s*$(\n\r\n)", "");return textStr;// 返回文本字符串} /*//从html中提取纯文本,这个部分是简易实现html剔除,只能部分筛选 public static String stripHT(String strHtml){ String txtcontent = strHtml.replaceAll("</?[^>]+>", ""); //剔出<html>的标签 txtcontent = txtcontent.replaceAll("<a>\s*trn</a>", "");//去除字符串中的空格,回车,换行符,制表符 return txtcontent; }*//* //这个是利用java自带的类实现html剔除功能,基本上没怎么用,这部分可以忽略import java.io.*;import javax.swing.text.html.*;import javax.swing.text.html.parser.*; public class Html2Text extends HTMLEditorKit.ParserCallback { StringBuffer s; public Html2Text() {} public void parse(Reader in) throws IOException { s = new StringBuffer(); ParserDelegator delegator = new ParserDelegator(); // the third parameter is TRUE to ignore charset directive delegator.parse(in, this, Boolean.TRUE); } public void handleText(char[] text, int pos) { s.append(text); } public String getText() { return s.toString(); } public static void main (String[] args) { try { // the HTML to convert //Reader in=new StringReader("string"); FileReader in = new FileReader("java-new.html"); Html2Text parser = new Html2Text(); parser.parse(in); in.close(); System.out.println(parser.getText()); } catch (Exception e) { e.printStackTrace(); } }}*/}
2.实现关键词在文档的查询功能
import java.io.Closeable;import java.io.File;import java.io.FileReader;import java.io.IOException;import java.io.LineNumberReader;import javax.swing.UIManager;import javax.swing.*;import java.awt.*;import javax.swing.plaf.FontUIResource; /** * 对文本文件的关键词进行搜索 */public class TextFileSearch {TestURL tt;public void SearchKeyword(File file,String keyword) {//参数校验verifyParam(file, keyword);//行读取LineNumberReader lineReader = null;try {lineReader = new LineNumberReader(new FileReader(file));String readLine = null;int times = 0;//出现的次数while((readLine =lineReader.readLine()) != null){ //判断每一行中,出现关键词的次数int index = 0; //获得readLine的对象值int next = 0; //定义开始查找关键字的序列号//int times = 0;//出现的次数//判断次数while((index = readLine.indexOf(keyword,next)) != -1) { //从每行的第0个索引开始遍历关键字next = index + keyword.length(); //下一次的遍历序号为序列号+关键字长度times++;//次数加1}/*if(times > 0) {//System.out.println("第"+ lineReader.getLineNumber() +"行" + "出现 "+keyword+" 次数: "+times);}*/}if (times>0){UIManager.put("JOptionPane.messageFont",new FontUIResource(new Font("宋体",Font.BOLD,20)));JOptionPane.showMessageDialog(null,"关键字"+"@"+tt.getUserKeyWords+"@"+"共有"+times+"个");}} catch (IOException e) {e.printStackTrace();} finally {//关闭流close(lineReader);}} /** * 参数校验 */private void verifyParam(File file, String keyword) {//对参数进行校验证if(file == null ){throw new NullPointerException("the file is null");}if(keyword == null keyword.trim().equals("")){throw new NullPointerException("the keyword is null or "" ");}if(!file.exists()) {throw new RuntimeException("the file is not exists");}//非目录if(file.isDirectory()){throw new RuntimeException("the file is a directory,not a file");}//可读取if(!file.canRead()) {throw new RuntimeException("the file cant read");}}/** * 关闭流 */private void close(Closeable able){if(able != null){try {able.close();} catch (IOException e) {e.printStackTrace();able = null;}}} }
3.显示效果
URL地址获取效果图
关键字查询界面
查询后效果图
到此这篇关于Java实现统计文档中关键字出现的次数的文章就介绍到这了,更多相关Java关键字次数内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。