String out = "名称:aaa---------------本地ip:2.5.6.1 远程ip:2.3.4.5,4.5.6.9 远程端口:22" +
" 名称:ddd---------------本地ip:2.2.2.1,远程端口:33,45 " +
"名称:eee---------------本地ip:2.5.6.1 远程ip:2.3.4.5,4.5.6.9 ";
类似如上字符串,每条信息都有“名称”,可能有“远程ip”、“远程端口”。如何过滤得到这三个字段的信息,如果某个字段没有则填空。即输出String[] filterOut;filteOut[0]=aaa filterOut[1]=2.5.6.1 filterOut[2]=22 filterOut[3]=ddd filterOut[4]=null filterOut[5]=33,45 filterOut[6]=eee filterOut[7]=2.3.4.5,4.5.6.9 filterOut[8]=null
可以通过正则表达式的分组功能去读取。给出的正则表达式为
(?名称:[a-zA-Z0-9]*)+([-]*)+(本地ip:[\d.a-z:]+\s)+(?远程ip:[,\d.a-z:]+\s)+(?远程端口:[\d]{0,5})
String[] aaa=out.split(" ") 我看你这似乎是以空格分开,如果是逗号,就 out.split(","),这样就会出现一个个的string数组,然后用indexOf来获取每一个关键字的位置,然后out分成char数组,然后输出指定位置的char就可以了,如果你没有空格或是逗号分开,用indexOf('名称',2),代表的是第二个名称的位置,当然这样也挺麻烦的,有简便的就看下面的了