import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class aaa {
private static final String QU = "區(qū)";
private static final String LU = "路";
private static final String NONG = "弄";
private static final String HAO = "號";
private static final String LOU = "樓";
private static final String SHI = "室";
private static final String CUN = "村";
private static final String XIAOQU = "小區(qū)";
private static final String OTHER = "其他";
public static void main(String[] args) {
String str = "a區(qū)b路m村x小區(qū)c弄d號e樓h室";
System.out.println(str);
int qu = str.indexOf(QU);
int lu = str.indexOf(LU);
int nong = str.indexOf(NONG);
int hao = str.indexOf(HAO);
int lou = str.indexOf(LOU);
int shi = str.indexOf(SHI);
int cun = str.indexOf(CUN);
int xiaoqu = str.indexOf(XIAOQU);
if (xiaoqu + 1 == qu) {
qu = 0;
}
List<Integer> list = new ArrayList<Integer>();
list.add(qu);
list.add(lu);
list.add(nong);
list.add(cun);
list.add(xiaoqu);
list.add(hao);
list.add(lou);
list.add(shi);
Collections.sort(list);
Map<String, String> map = new HashMap<String, String>();
int i1 = 0;
int i = 0;
String preField = "";
for (i = 0; i < list.size(); i++) {
if (i == 0) {
i1 = 0;
} else {
i1 = i - 1;
}
preField = judgeValue(list.get(i1), list.get(i), qu, QU, str, map,
preField);
preField = judgeValue(list.get(i1), list.get(i), lu, LU, str, map,
preField);
preField = judgeValue(list.get(i1), list.get(i), nong, NONG, str,
map, preField);
preField = judgeValue(list.get(i1), list.get(i), cun, CUN, str,
map, preField);
preField = judgeValue(list.get(i1), list.get(i), xiaoqu, XIAOQU,
str, map, preField);
preField = judgeValue(list.get(i1), list.get(i), hao, HAO, str,
map, preField);
preField = judgeValue(list.get(i1), list.get(i), lou, LOU, str,
map, preField);
preField = judgeValue(list.get(i1), list.get(i), shi, SHI, str,
map, preField);
}
if (list.get(i - 1) == xiaoqu) {
map.put(OTHER, str.substring(list.get(i - 1) + 2));
} else {
map.put(OTHER, str.substring(list.get(i - 1) + 1));
}
System.out.println(map.get(QU));
System.out.println(map.get(LU));
System.out.println(map.get(NONG));
System.out.println(map.get(CUN));
System.out.println(map.get(XIAOQU));
System.out.println(map.get(HAO));
System.out.println(map.get(LOU));
System.out.println(map.get(SHI));
System.out.println(map.get(OTHER));
}
// i1為list中上一個值,i為當(dāng)前值,j為實際值,field為分隔名,preField為上一個名
private static String judgeValue(int i1, int i, int j, String field,
String str, Map<String, String> map, String preField) {
if (i1 <= 0 || i1 == i) {
i1 = 0;
} else {
i1 = i1 + preField.length();
}
if (i > 0) {
if (i == j) {
map.put(field, str.substring(i1, i + field.length()));
return field;
}
}
return preField;
}
}
算法并不完善,時間、空間復(fù)雜度高了,完全可以進一步,但是沒時間去整理,就這樣,也可以湊合用用。