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

下面代码是我用KSOAP包解析后,返回的string类型的结果,我想将以下处理成几组数据:如Serial=1;Name=Web程序小组;ID=0001;Serial=2;... 下面代码是我用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; };
展开
 我来答
198901245631
推荐于2017-10-01 · TA获得超过3.5万个赞
知道大有可为答主
回答量:9037
采纳率:92%
帮助的人:1691万
展开全部
可以通过java的”substring“方法截取出对应的字符串,前提是知道开始和结束的字符串的值:
String getSignInfo = reqResult.substring(reqResult.indexOf("<sign>") + 6, reqResult.indexOf("</sign>"));
解释:上述方法就是截取reqResult字符串的中开始”<sign>“和结束”</sign>“中间部分的内容,”6“就是”<sign>“的长度,,之后将获取的结果赋值给”getSignInfo进行输出即可“;
备注:以上方法通用于截取,数字”6“和开始结束字符串根据实际需要修改即可。
夙沙曲
2014-07-26 · TA获得超过402个赞
知道小有建树答主
回答量:262
采纳率:0%
帮助的人:225万
展开全部
可以用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]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yyq2012aa
推荐于2017-09-06 · 超过56用户采纳过TA的回答
知道小有建树答主
回答量:107
采纳率:0%
帮助的人:130万
展开全部
如果你的字符串结构是你给的这样,那么从第三个"{"开始是数据部分
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);
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
皇朝12569
2014-07-26 · 超过81用户采纳过TA的回答
知道答主
回答量:143
采纳率:0%
帮助的人:186万
展开全部
这个当城市地址达到一定的量的时候用正则反而麻烦,推荐一款
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(",", " ")); }}
求采纳为满意回答。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
quanbiaode
2014-07-26 · 超过26用户采纳过TA的回答
知道答主
回答量:119
采纳率:50%
帮助的人:41.7万
展开全部
这段返回的字符串,特征明显,你提取的就是Table1=anyType最后的结果,所以可以采用字符串截取,或者正则表达式来实现。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式