【紧急求组】一行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 无关