簡體   English   中英

使用Regex(Java)在對象中生成值

[英]Making values in to objects using Regex (Java)

我有一些看起來像這樣的數據

myobject{keyone:"valueone",keytwo:"valuetwo",keythree:"valuethree"}
myobject{keyone:"valueone",keytwo:"valuetwo",keythree:"valuethree"}
myobject{keyone:"valueone",keytwo:"valuetwo",keythree:"valuethree"}

我想知道從中創建一堆對象的最佳方法是什么。 我寫了以下正則表達式來提取特定鍵的所有值...

Pattern p_keyone            = Pattern.compile("keyone:\"(.+?)\"\\,"); 
Matcher match_keyone    = p_keyone.matcher(string);

while(match_keyone.find()) {      
    myobjects.add(new MyObject(match_keyone.group(1));
}

這給了我一堆帶有單個參數的對象...

myobjects.add(<valueone>);

有沒有一種方法可以執行單個正則表達式查詢並一次性創建一堆具有所有值作為參數的對象。 像這樣...

new MyObject( <valueone>, <valuetwo> , <valuethree> );

謝謝

您的方法還不錯。

您可以更改的內容很少,盡管它們是否有意義取決於您的要求:

  • 創建一個“ Factory”類,該類接受1行數據並創建對象。
  • 逐行讀取數據,對於每一行,請使用Factory進行創建。
  • 根據您希望它獲得花式(且容易出錯)的方式,甚至可以讀取對象和屬性的名稱,然后使用反射來創建實例並設置屬性。

String.split()可以幫助:

 String line = "myobject{keyone:\"valueone\",keytwo:\"valuetwo\",keythree:\"valuethree\"}"
             // ^-----[0]------^  ^--[1]-^  ^--[2]-^  ^--[3]-^  ^--[4]---^  ^--[5]---^  ^[6]
 String[] parts = line.split("\"");
 MyObject myObject = new MyObject(parts[1], parts[3], parts[5]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM