我正在通过读取输入文件中的特定部分来制作HashMap。但是输入文件没有标准的缩进格式,即一些行以#字符开头,而有些则不行。我应该从文件中获得关键和价值。 这里是我的代码:Hash Map Key比较
String schedule = "config [\"Sql\"] = \\";
Scanner scanner = new Scanner(f1);
while (scanner.hasNext()) {
sCurrentLine = scanner.nextLine();
if (sCurrentLine.contains(schedule)) {
System.out.println(f1.getFileName()+" Contains a schedule");
scheduleFlag = true;
}
else if(sCurrentLine.contains("config [")) {
scheduleFlag = false;
}
if(sCurrentLine.trim().startsWith("(") && sCurrentLine.trim().endsWith(",") && scheduleFlag == true) {
scheduleName = sCurrentLine;
scheduleName = scheduleName.substring(scheduleName.indexOf('"')+1, scheduleName.lastIndexOf('"'));
//writer.write(scheduleName);
out.write(scheduleName.getBytes());
HashMapping = true;
}
if(scheduleFlag == true && HashMapping == true) {
String [] values = sCurrentLine.split(":");
if (values.length < 2);
else {
hm.put(values[0], values[1]);
}
}
这里是输入文件的一部分:
#config ["Sql"] = \
#[
# ("KB",
# {
# "subsystem": "DMN",
# "enabled": "0",
# "freqtype": "4",
}
我只是想包括我的钥匙双引号括起来的,忽略了#字符(可能会或可能不存在于给定的文件中)。有什么办法吗?
只是删除所有''#字符'str.replaceAll ('#','')' – Nikem
@Nikem也许可以使用'replaceAll(“^ \\ * *”,“”)'来代替'#'在行首? –
我建议你得到一个有用的文件格式。哪个软件正在导出这样的数据? – Holger