|
我是这样考虑的:
首先,因为提到的那些字段都未必都有,所以我用一个ArryLis把所有的字段给装起来。
List<String> fields = new ArrayList<String>();
fields.add("刊名");
fields.add("主办");
fields.add("周期");
fields.add("出版地");
fields.add("语种");
fields.add("开本");
fields.add("曾用刊名");
fields.add("创刊年");
接着按“:”来拆分给出的文字
String str = "刊名:Journal of Integrative Plant Biology 植物学报(英文版) 主办:中国植物学会;中国科学院植物研究所 周期: 月刊 出版地:北京市 语种: 中英 开本: 大16开 ISSN 0577-7496 CN 11-1896/Q 邮发代号 2-500 曾用刊名:Acta Botanica Sinica;Journal of Integrative Plant Biology(2005-);植物学报(1994-2004);中国植物学报(英文版) 创刊年:1952 中国期刊方阵来源刊 ASPT来源刊 中国期刊网来源刊";
String[] strs = str.split(":");
Map<String, String> result = new HashMap<String, String>();
int length = strs.length;
for (int i = 0; i < length; i++) {
System.out.println(strs);
}
结果是:
刊名
Journal of Integrative Plant Biology 植物学报(英文版) 主办
中国植物学会;中国科学院植物研究所 周期
月刊 出版地
北京市 语种
中英 开本
大16开 ISSN 0577-7496 CN 11-1896/Q 邮发代号 2-500 曾用刊名
Acta Botanica Sinica;Journal of Integrative Plant Biology(2005-);植物学报(1994-2004);中国植物学报(英文版) 创刊年
1952 中国期刊方阵来源刊 ASPT来源刊 中国期刊网来源刊
观察结果,我们发觉strs[0]==刊名,strs[1]==Journal of Integrative Plant Biology 植物学报(英文版) 主办,strs[2]==中国植物学会;中国科学院植物研究所 周期
发觉这样一个规律,当i!=0&&i<strs.length的时候str其实是上一字段的值和下一个字段的字段名。
前面说了,所有的字段名都已经add到ArrayList了,现在我们又把整段文字按“:”拆分开,现在查找拆分开来的每一个字符串,看它是否包含有字段名,包含的话,可以把当前字符串的下一个字符串作为该字段的值,作为对应,还要一个map来建立字段名到字段值的对应关系
Map<String, String> result = new HashMap<String, String>();
int fieldsLeg = fields.size();
for (int i = 0; i < length; i++) {
for (int y = 0; y < fieldsLeg; y++) {
String field = (String) fields.get(y);
if (strs.endsWith(field) && i < length && y < fieldsLeg) {
String fieldValue = strs[i + 1];
result.put(field, fieldValue);
}
}
}
完整的程序应该是:
public class Test {
public static void main(String[] args) {
List<String> fields = new ArrayList<String>();
fields.add("刊名");
fields.add("主办");
fields.add("周期");
fields.add("出版地");
fields.add("语种");
fields.add("开本");
fields.add("曾用刊名");
fields.add("创刊年");
String str = "刊名:Journal of Integrative Plant Biology 植物学报(英文版) 主办:中国植物学会;中国科学院植物研究所 周期: 月刊 出版地:北京市 语种: 中英 开本: 大16开 ISSN 0577-7496 CN 11-1896/Q 邮发代号 2-500 曾用刊名:Acta Botanica Sinica;Journal of Integrative Plant Biology(2005-);植物学报(1994-2004);中国植物学报(英文版) 创刊年:1952 中国期刊方阵来源刊 ASPT来源刊 中国期刊网来源刊";
String[] strs = str.split(":");
int length = strs.length;
for (int i = 0; i < length; i++) {
System.out.println(strs);
}
Map<String, String> result = new HashMap<String, String>();
int fieldsLeg = fields.size();
for (int i = 0; i < length; i++) {
for (int y = 0; y < fieldsLeg; y++) {
String field = (String) fields.get(y);
if (strs.endsWith(field) && i < length && y < fieldsLeg) {
String fieldValue = strs[i + 1].replace((String) fields
.get(y), "");
result.put(field, fieldValue);
}
}
}
for (int i = 0; i < fieldsLeg; i++) {
String key = (String) fields.get(i);
if (result.containsKey(key) == true) {
System.out.println(key + ":" + result.get(key));
}
}
// TODO Auto-generated method stub
}
}
运行结果为:
刊名:Acta Botanica Sinica;Journal of Integrative Plant Biology(2005-);植物学报(1994-2004);中国植物学报(英文版) 创刊年
主办:中国植物学会;中国科学院植物研究所 周期
周期: 月刊 出版地
出版地:北京市 语种
语种: 中英 开本
开本: 大16开 ISSN 0577-7496 CN 11-1896/Q 邮发代号 2-500 曾用刊名
曾用刊名:Acta Botanica Sinica;Journal of Integrative Plant Biology(2005-);植物学报(1994-2004);中国植物学报(英文版) 创刊年
创刊年:1952 中国期刊方阵来源刊 ASPT来源刊 中国期刊网来源刊
当然这样做还不理想,有些值被覆盖了, |
评分
-
1
查看全部评分
-
|