【紧急求组】一行string中key=value,有何工具类可以直接取值?
我想实现:一行string中,利用工具类直接就可以取值。例如“fastJson”那种效果,一行String的格式:key=value(换行符号)key=value(换行符号)....
请问有相关的工具类或者什么方法可以直接取值吗?
自己写的方法还是有些情况用不上,请拖到最下。
try { FileReader fr = new FileReader(openFile); BufferedReader bf = new BufferedReader(fr); String str; // 按行读取字符串 while ((str = bf.readLine()) != null) { // 把这行进行入取 Properties properties = new Properties(); properties.load(new ByteArrayInputStream(str.getBytes("UTF-8"))); System.out.println("读取skill_id:" + properties.get("skill_id")); } bf.close(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); }
读取skill_id:32032 读取skill_id:null 读取skill_id:null 读取skill_id:null 读取skill_id:null 读取skill_id:null 读取skill_id:null 读取skill_id:null 读取skill_id:null
自己写了一个方法,但还是有一些地方有问题:
例如:
<skill skillName="Greater Windy Healing Potion" skillId="17920" skillLvl="1" getLevel="68" learnedByNpc="true">
这行代码中,存在“skillName也存在空格”,我的方法就不好用了。
public Ret getKeyAndValue(String str) { List<String> resultIds = Splitter.on(" ").on(" ").trimResults() .splitToList(str.replaceAll("\\[", "").replaceAll("]", "")); Ret ret = Ret.create(); for (String string : resultIds) { if (string.contains("=")) { String[] s = string.split("="); if (s.length == 2) { ret.set(s[0], s[1]); } } } return ret; }
项目:JFinal
如果你的每对 key value 之间的分隔符没有统一的话,可以先利用 JDK 中的 String.replaceAll(String regex, String replacement) 方法,将分隔符统一,例如统一成 "###":
str = str.repalceAll(regex, "###");
String[] keyValueArray = str.split("###");
上面两步就将所有 key value 全放到数组里头去了,然后你再利用:
kv.splite("=")
就可以将 key value 分离出来了
注意这些事都与 jfinal 无关