我正在通過讀取輸入文件中的特定部分來製作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