【发布时间】:2015-12-21 20:31:40
【问题描述】:
我的文本包含一些降价格式的内容,它由两部分组成,虚线包围的第一部分是元数据,虚线后面的其余部分是实际内容。
我的格式是这样的:
---
toc:
customization:
title: Customization
themes: Themes
plugins: Plugins
nav: 5
---
summary: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque vel diam purus.
body:Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque vel diam purus.`
我想提取这些虚线内的内容并存储在单独的 HashMap 中(不想将这些破折号存储在地图中)以及类似地单独的 hashMap 用于实际内容。
Scanner scanner = new Scanner(new FileReader("src/main/webapp/WEB-INF/content/" + url + ".md"));
HashMap<String, String> map = new HashMap<String, String>();
while (scanner.hasNextLine()) {
String[] columns = scanner.nextLine().split(":");
for (int i = 0; i < columns.length; i++) {
if (!columns[i].isEmpty() && !columns[i].contains("---")) {
map.put(columns[0], columns[1]);
}
}
}
scanner.close();
System.out.println(map);
谁能告诉我如何在破折号中提取这些行并将其存储在单独的 HashMap 中并将实际内容存储在单独的 HashMap 中?
【问题讨论】:
-
类似
---(.*?)---的东西?或者\-{3}(.*?)\-{3} -
可以举个小例子吗?
-
我不太确定你想做什么。但这是一个快速的正则表达式来捕获破折号之间的所有文本。您也可以使用现有答案中的布尔开关。
-
你能举一些例子吗?我不确定键
toc和customization的值是什么。 -
@cricket_007 - 请告诉我如何使用正则表达式捕获破折号之间的所有文本?
标签: java regex java.util.scanner