Java:将String剪切为Properties

时间:2014-07-28 18:53:44

标签: java

我需要从字符串中提取信息并将其存储在表格中,我现在认为属性是一个不错的选择,但不幸的是我无法完成它。我的代码如下:

String st1 = "module name="rootFS1" version="0.1.0" public_cle="0" type="0"";
String st2 = "module name="rootFS2" version="0.1.1" public_cle="1" type="1"";    

StringReader sb1 = new StringReader(st1);
Properties module1 = new Properties();
module.load(sb1);

StringReader sb2 = new StringReader(s2t);
Properties module2 = new Properties();
module.load(sb2);

List<ModuleInfo> modInfoList;

modInfoList.set(1, module1.getProperty("name")); // it doesnot work already here, syntax error 
modInfoList.set(1, module1.getProperty("version"));    
modInfoList.set(1, module1.getProperty("public_cle"));
modInfoList.set(1, module1.getProperty("type")); 

modInfoList.set(2, module2.getProperty("name"));
modInfoList.set(2, module2.getProperty("version"));    
modInfoList.set(2, module2.getProperty("public_cle"));
modInfoList.set(2, module2.getProperty("type"));

return modInfoList;

有谁能让我更好地完成这项任务?非常感谢提前!

2 个答案:

答案 0 :(得分:0)

您正尝试将getProperty()的返回值插入List<ModuleInfo>,而List<ModuleInfo> modInfoList; ModuleInfo moduleInfo = new ModuleInfo(); moduleInfo.setName(module, module1.getProperty("name")); moduleInfo.setVersion(module, module1.getProperty("version")); moduleInfo.setPublicCle(module, module1.getProperty("public_cle")); moduleInfo.setType(module, module1.getProperty("type")); modInfoList.add(moduleInfo); moduleInfo = new ModuleInfo(); moduleInfo.setName(module, module2.getProperty("name")); moduleInfo.setVersion(module, module2.getProperty("version")); moduleInfo.setPublicCle(module, module2.getProperty("public_cle")); moduleInfo.setType(module, module2.getProperty("type")); modInfoList.add(moduleInfo); 的类型不同。试试这个:

List<ModuleInfo> modInfoList;

ModuleInfo moduleInfo = buildModuleInfo(module1);
modInfoList.add(moduleInfo);

moduleInfo = buildModuleInfo(module2);
modInfoList.add(moduleInfo);

更好的是,将创建ModuleInfo的代码拉出到您在Properties对象中传递的辅助方法中,然后调用它两次:

{{1}}

答案 1 :(得分:0)

您的字符串应使用“\ n”作为分隔符,以便加载属性

    String st1 = "module name=\"rootFS1\" version=\"0.1.0\" public_cle=\"0\" type=\"0\"";
    String[] array = StringUtil.split(st1.split(" ", 2)[1], ' ');

    Properties module1 = new Properties();
    module1.load(new StringReader(StringUtils.join(array, "\n")));

    Map<Integer, String> modInfoList = new HashMap<Integer, String>();
    modInfoList.put(1, module1.getProperty("name"));