从java字符串中提取部分字符

下面代码是我用KSOAP包解析后,返回的string类型的结果,我想将以下处理成几组数据:如
Serial=1; Name=Web程序小组; ID=0001;
Serial=2; Name=界面; ID=000101;
Serial=8; Name=移动应用开发; ID=0002
该如何提取出我想要的数据,并单独存储到变量中年
; diffgram=anyType{NewDataSet=anyType{Table1=anyType{Serial=1; Name=Web程序小组; ID=0001; }; Table1=anyType{Serial=2; Name=界面; ID=000101; }; Table1=anyType{Serial=8; Name=移动应用开发; ID=0002; }; Table1=anyType{Serial=9; Name=Android应用开发; ID=000201; };

可以通过java的”substring“方法截取出对应的字符串,前提是知道开始和结束的字符串的值:
String getSignInfo = reqResult.substring(reqResult.indexOf("<sign>") + 6, reqResult.indexOf("</sign>"));
解释:上述方法就是截取reqResult字符串的中开始”<sign>“和结束”</sign>“中间部分的内容,”6“就是”<sign>“的长度,,之后将获取的结果赋值给”getSignInfo进行输出即可“;
备注:以上方法通用于截取,数字”6“和开始结束字符串根据实际需要修改即可。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-07-26
可以用string类的split命令。String[] a = "Serial=1; Name=Web程序小组; ID=0001; ".split("=").split(";")
这样 a = ["Serial", "1", "Name", "Web程序小组", "ID", "0001"]
就知道a[0]是Serial, a[1]是第一个serial的值。假设第i个serial是i,那么第i个serial的值是a[i+1],name是a[i+3],ID是a[i+5]
第2个回答  推荐于2017-09-06
如果你的字符串结构是你给的这样,那么从第三个"{"开始是数据部分
char[] chars = diffgram.toCharArray();

int index = 0;
int lastLeft = 0;
int rIndex = 0;
for(int i=0; i < chars.length; i++) {
if(chars[i] == '{'){
index ++;
}

if(index >=3 && chars[i] == '}' && (index-rIndex) == 3) {
rIndex ++;
String data = new String(chars, lastLeft+1, i-lastLeft-1); //前后的括号({})去除掉,data就是你想要的
System.out.println(data);
}

if(chars[i]=='{'){
lastLeft = i;
}
}追问

您好,前面还有一些描述性的东西,数据时从那开始的,前面也有括号该怎样处理。InventoryCountMTDepartmentBrowserResponse{InventoryCountMTDepartmentBrow
有没有能用“name”“serial”直接查找的方法?

追答

可以的,只要找以这个开头“{Serial=”就可以了。

char[] chars = diffgram.toCharArray();
int left = 0;
char startPart[] = "Serial=".toCharArray();
for(int i=0; i -1 && chars[i] == '}') {
String data = new String(chars, left+1, i-left-1);
left = -1;
System.out.println(data);
}
}

本回答被提问者采纳
第3个回答  2014-07-26
这个当城市地址达到一定的量的时候用正则反而麻烦,推荐一款
public class ClassExample1 { public static void main(String args[]) { // 定义地址库 List<String> cities = new ArrayList<String>(); // 填充数据 ...... cities.add("上海"); cities.add("芜湖"); // 待测数据 String arg = "东华大学信息科学与技术学院,上海,201620;安徽师范大学数学计算机学院,安徽,芜湖,241000"; // 提取数据 StringBuffer sb = new StringBuffer(); for (int i = 0; i < cities.size(); i++) { if(arg.contains(cities.get(i))){ sb.append(cities.get(i)+","); } } // 打印提取信息 System.out.println(sb.toString().replaceAll(",", " ")); }}
求采纳为满意回答。
第4个回答  2014-07-26
这段返回的字符串,特征明显,你提取的就是Table1=anyType最后的结果,所以可以采用字符串截取,或者正则表达式来实现。
相似回答