android 正则表达式使用,在Android中使用正则表达式解析

开发者分享在Android中如何使用正则表达式解析来自服务器的套接字消息,遇到问题在Eclipse和实际设备上表现不一致,寻求解决解析Service和Link部分的代码及可能的原因。

我想使用正则表达式来解析通过Android客户端中的套接字接收到的消息,并将部分消息放入列表中。在Android中使用正则表达式解析

这是解析消息:

{Code=1;NumServices=3;Service1=World Weather Online;Link1=http://www.worldweatheronline.com/;Service2=Open Weather Map;Link2=http://openweathermap.org/;Service3=Weather;Link3=http://www.weather.gov/;}

和我使用的方法:

private void parse(String mess) {

String Code="0";

Pattern pattern = Pattern.compile("Code=(.*?);");

Matcher matcher = pattern.matcher(mess);

while (matcher.find()) {

Code = matcher.group(1);

Log.d("Matcher", "PATTERN MATCHES! Code parsed "+Code);

// System.out.println("Code: "+Code);

}

Log.d("Matcher", "PATTERN MATCHES! Code not parsed "+Code);

if(Code.compareTo("1")==0){

// System.out.println("testing the parser");

// Pattern pattern1 = Pattern.compile(";CPU=(.*?);Screen");

Pattern pattern2 = Pattern.compile("NumServices=(.*?);");

Matcher matcher2 = pattern2.matcher(mess);

int number=0;

if (matcher2.find()) {

String numb = matcher2.group(1);

this.tester = numb;

Log.d("Matcher", "PATTERN MATCHES! numb services");

number = Integer.parseInt(numb);

}

else{

this.tester = "NOT FOUND";

Log.d("Matcher", "PATTERN MATCHES! match num failed");

}

int i;

for(i=1;i<=number;i++){

Pattern pattern3 = Pattern.compile(";Service"+i+"=(.*?);");

Pattern pattern4 = Pattern.compile(";Link"+i+"=(.*?);");

Matcher matcher3 = pattern3.matcher(mess);

Matcher matcher4 = pattern4.matcher(mess);

if (matcher3.find()) {

// Log.d("Matcher", "PATTERN MATCHES! services");

String serv = matcher3.group(1);

// this.tester = serv;

your_array_list.add(serv);

}

if (matcher4.find()) {

Log.d("Matcher", "PATTERN MATCHES! links");

String link = matcher4.group(1);

your_array_list2.add(link);

}

}

}

}

的log.d没有工作,所以我不能验证码的流动。奇怪的是,我在Eclipse中测试了相同的代码,它的工作原理。当我用烤面包来显示时,它给我的价值代码,但不是服务。在某处是否有错误或者正则表达式在Android中的工作方式不同?

谢谢。

+0

你为什么不只是增加了一个日志在检查'mess'的值的方法刚开始的时候?它会对你非常有用......对我们来说! –

+0

我用烤面包检查了我从服务器发送的值及其消息: {Code = 1; NumServices = 3; Service1 = World Weather Online; Link1 = http://www.worldweatheronline.com/; Service2 =打开天气地图; Link2 = http://openweathermap.org/; Service3 =天气; Link3 = http://www.weather.gov/;} –

+0

请澄清你的意思,当你说你无法显示服务的价值。你是指Service1,Service2,Service3还是NumServices? –

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值