2015-10-16 58 views
1

我想使用此方法將2D數組轉換爲屬性文件。然後,通過將屬性字符串轉換回二維數組,將其從屬性中導入。但是我將字符串轉換回二維數組遇到困難。將「deepToString()」轉換回2D數組

編輯:我想反轉二維數組字符串輸出回二維數組。但是你給我的question對2D陣列沒有幫助。由於Arrays.replace()不能替代二維數組的內部元素。

這裏是我的代碼:

public static void getSettings(){ 
try { 
File file = new File("config.properties"); 
Properties p = new Properties(); 
FileInputStream fileInput = new FileInputStream(file); 
//Import 
moduleNames = p.getProperty("moduleNames").split(""); 
moduleData = ??? //I don't know how to convert String to String[][] 
} 
catch (Exception e){ 
e.printStackTrace(); 
} 
} 

這裏的另一個函數來設置屬性:

public static void writeFile(String[][] mD, String[] mN){ 
try{ 
Properties p = new Properties; 
File file = new File("config.properties"); 

p.setProperty("moduleData", Arrays.deepToString("mD")); 
p.setProperty("moduleNames", Arrays.toString("mN")); 
//...further more code to flush the data out 
} catch (Exception e){ 
e.printStackTrace(); 
} 

} 

誰能告訴我如何字符串(從deepToString)轉換回爲String [] []?

我的項目是開源的。這個:Conf.java Line271是set屬性之一。

而這個:Conf.java Line215是負載String到String [] []之一。

+2

檢查http://stackoverflow.com/questions/456367/reverse-parse-the-output-of-arrays-tostringint – Tom

+0

@Tom您可以投票重複。 – YoungHobbit

+2

java API中沒有方法可以自動將它轉換回我知道的數組。有人已經做了你需要的東西:[stringToDeep](http://stackoverflow.com/a/22428926/4088809)@YoungHobbit :) –

回答

0

我找不到任何可以做到這一點的標準方法。但使用來自here我已經制定了以下的觀點:

 String[][] sample = new String[][]{{"Apple", "Ball"},{"Cat", "Dog"}, {"Elephant, Fish"} }; 
     String temp = Arrays.deepToString(sample); 
     String[] strings = temp.replace("[", "").replace("]", ">").split(", "); 
     List<String> stringList = new ArrayList<>(); 
     List<String[]> tempResult = new ArrayList<>(); 
     for(String str : strings) { 
      if(str.endsWith(">")) { 
       str = str.substring(0, str.length() - 1); 
       if(str.endsWith(">")) { 
        str = str.substring(0, str.length() - 1); 
       } 
       stringList.add(str); 
       tempResult.add(stringList.toArray(new String[stringList.size()])); 
       stringList = new ArrayList<>(); 
      } else { 
       stringList.add(str); 
      } 
     } 
     String[][] originalArray = tempResult.toArray(new String[tempResult.size()][]); 

這有很多改進的餘地,我希望你能做到這一點。這只是爲了將字符串轉換回二維數組。

+0

謝謝!你的代碼可以幫助我。但Tahar Bakir的評論解決了我的問題。 – mob41