Java解析文本
import java.io.*;
import java.util.*; public class FileManager { public List<Dishes> parseFile(File file) {
String str = null;
List<Dishes> list = new ArrayList<Dishes>();
try {
BufferedReader br = new BufferedReader(new FileReader(file));
while((str = br.readLine())!=null) {
if(str.startsWith("Name:")) {
int index = str.indexOf(":");
String dishName = str.substring(index+1,str.length()); str = br.readLine();
index = str.indexOf(":");
String categoriesString = str.substring(index+1,str.length()); String[] cateArr = categoriesString.split(",");
Set<String> categories = new HashSet<String>();
for(int j = 0;j<cateArr.length;j++) {
categories.add(cateArr[j]);
} Set<String> ingredients = new HashSet<String>();
String ss = br.readLine(); while((str = br.readLine()) != null && !(str.length() == 0)) {
String[] strArr = str.split(" ");
for(int i = 0;i<strArr.length;i++) {
ingredients.add(strArr[i]);
}
}
Dishes d = new Dishes();
d.setName(dishName);
d.setCategories(categories);
d.setIngredients(ingredients); list.add(d);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
FileManager fm = new FileManager();
List<Dishes> list = new ArrayList<Dishes>();
File file = new File("D:/dishes.txt");
list = fm.parseFile(file); for(int i = 0; i<list.size();i++) {
System.out.println(list.get(i).getName());
System.out.println(list.get(i).getCategories());
System.out.println(list.get(i).getIngredients());
}
} } //菜肴类,一种菜对应于菜肴类的一的实例
class Dishes {
private String name;
private Set<String> Categories; //菜肴类别
private Set<String> ingredients; //菜肴配料
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<String> getCategories() {
return Categories;
}
public void setCategories(Set<String> categories) {
Categories = categories;
}
public Set<String> getIngredients() {
return ingredients;
}
public void setIngredients(Set<String> ingredients) {
this.ingredients = ingredients;
}
}
使用JAVA对下面的复杂文本进行解析,这是一个菜谱的txt文本文件,下面只列出两道菜谱,其余格式都相同.只要能分别解析出Name,Categories,和下面的配料,存入一个对象中即可。请给出解析步骤的详细代码 大侠们拜托了,之后必定追加最高分. 下面是菜谱的文本格式 Name: Yu xiang rou si
Categories: Pork, Chinese 500 g Pork 10 g sugar
10 g chilly 1 1/2 g salt
15 g oil In large bowl, blend oil and sugars on low until well mixed. Add chilly.
Beat in salt... ----- Name: xi hong shi chao ji dan
Categories: tomato, Chinese 300 g tomato 10 g sugar
5 g oil 2 1/2 g salt Chop tomatoes, blend oil and sugars on low until well mixed.
add some salt... -----
配料部分是不确定的, 比如
2 1/2 c Brown sugar 2 ts Cloves
2 c Sour milk 2 ts Nutmeg
4 c Flour 3 ea Eggs, lg
3/4 c Butter 15 oz Raisins
2 c Jam 1 c Nutmeats
2 ts Baking soda 1 x Figs and dates as desired
这个也应该需要解析至少存在一个数组或者list里 http://zhidao.baidu.com/link?url=eZtAHGCL3EM3OrpBdzKj6LAWnxZSQkG7PzUqZ7BT347wuyuI_VKCv34Mz7j6XsC0CVf17lo4OJ2oYvmV36rvaq
Java解析文本的更多相关文章
- atitit.java解析sql语言解析器解释器的实现
atitit.java解析sql语言解析器解释器的实现 1. 解析sql的本质:实现一个4gl dsl编程语言的编译器 1 2. 解析sql的主要的流程,词法分析,而后进行语法分析,语义分析,构建sq ...
- Java 解析 XML
Java 解析 XML 标签: Java基础 XML解析技术有两种 DOM SAX DOM方式 根据XML的层级结构在内存中分配一个树形结构,把XML的标签,属性和文本等元素都封装成树的节点对象 优点 ...
- Java解析XML汇总(DOM/SAX/JDOM/DOM4j/XPath)
[目录] 一.[基础知识——扫盲] 二.[DOM.SAX.JDOM.DOM4j简单使用介绍] 三.[性能测试] 四.[对比] 五.[小插曲XPath] 六.[补充] 关键字:Java解析xml.解析x ...
- 【Java】详解Java解析XML的四种方法
XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML.本文将详细介绍用Java解析XML的四种方法. AD: XML现在已经成为一种通用的数据交换格式,它的平台无关性,语 ...
- Java解析word文档
背景 在互联网教育行业,做内容相关的项目经常碰到的一个问题就是如何解析word文档. 因为系统如果无法智能的解析word,那么就只能通过其他方式手动录入word内容,效率低下,而且人工成本和录入出错率 ...
- Java解析XML之Dom4j
Java解析XML文件的方法有多种,个人感觉最常用的是使用Dom4j来解析XML文件.下面就简单介绍下Dom4j的基础使用. Dom4j需要jar包的支持,大家可以从网络上下载,如dom4j-1.6. ...
- XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax
本文主要涉及:xml概念描述,xml的约束文件,dtd,xsd文件的定义使用,如何在xml中引用xsd文件,如何使用java解析xml,解析xml方式dom sax,dom4j解析xml文件 XML来 ...
- 用java解析在OpenStreetMap上下载的地图数据(SAX版,适合比较大的xml文件)
java程序如下: package gao.map.preprocess; import java.io.BufferedWriter; import java.io.File; import jav ...
- Java解析XML:Jdom解析和SAX解析
今天看了Java解析XML的几种方法,记录一下 1.Jdom解析 (1)读取XML内容 private static void readXML() { // TODO Auto-generated m ...
随机推荐
- C# 如何保证对象线程内唯一:数据槽(CallContext)
如果说,一个对象保证全局唯一,大家肯定会想到一个经典的设计模式:单例模式,如果要使用的对象必须是线程内唯一的呢? 数据槽:CallContext,ok看下msdn对callcontent的解释. Ca ...
- c++ 头文件包含问题-include&class
http://blog.csdn.net/jiajia4336/article/details/8996254 前向声明概念(forward declaration) 在程序中引入了类类型的B.在声明 ...
- IPC进程通信机制
select.poll.epoll之间的区别总结[整理] 进程间通信---共享内存 信号量和互斥锁的区别 http://www.2cto.com/os/201510/445553.html http: ...
- Java使用正则表达式解析LRC歌词文件
LRC歌词是一种应用广泛的歌词文件,各主流播放器都支持. lrc歌词文本中含有两类标签: 1.标识标签(ID-tags) [ar:艺人名] [ti:曲名] [al:专辑名] [by:编者(指编辑LRC ...
- 数据结构之AVL树
AVL树是高度平衡的而二叉树.它的特点是:AVL树中任何节点的两个子树的高度最大差别为1. 旋转 如果在AVL树中进行插入或删除节点后,可能导致AVL树失去平衡.这种失去平衡的可以概括为4种姿态:LL ...
- WCF分布式开发必备知识(3):Web Service 使用
参考地址:http://www.cnblogs.com/zhili/p/WebService.html 一.WebService概述 SOAP.WSDL.UDDISOAP(Simple Object ...
- Newtonsoft.Json(Json.Net)学习笔记-高级使用(转)
1.忽略某些属性 2.默认值的处理 3.空值的处理 4.支持非公共成员 5.日期处理 6.自定义序列化的字段名称 7.动态决定属性是否序列化 8.枚举值的自定义格式化问题 9.自定义类型转换 10.全 ...
- Win10 兼容性 Visual studio web应用程序 ASP.NET 4.0 尚未在 Web 服务器上注册
系统升级到windows10 ,Visual studio 创建web应用程序时出现如下提示ASP.NET 4.0尚未在 Web 服务器上注册.为了使网站正确运行,可能需要手动将 Web 服务器配置为 ...
- 团队作业-第一周-NABCD竞争性需求分析
1. Need 需求 随着科技信息的发展,传统的课堂点名亟待步入信息处理的轨道,移动校园课堂点名软件恰好的切入了这个需求点,市场中词类软件也为数不多,因此需求也是比较强烈. 2. Approac ...
- ThinkPHP中使用ajaxReturn进行ajax交互
以管理员登录为例来介绍下$this->ajaxReturn与模板页进行ajax交互使用方法 首先看PHP控制器的处理,在application/Admin/Controller/LoginCon ...