截取字符串 你开始的时候是什么xml .是xml 的话直接解析xml 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 返回的时候就是这种样式:---------------------------来自网页的消息---------------------------<事件 事件类型='2048' 消息值='3' 对象ID='0' 参数1='0' 参数2='0'><标绘消息 plottype="贴地面标绘" msgtype="标绘结束"> <结束类型 type="完成" /> <控制点 num="8"> <Pt3dLLA lon="107.7446494565" lat="37.45078285974" alt="28132.07" /> <Pt3dLLA lon="107.8470409767" lat="37.4706619983" alt="23114.81" /> <Pt3dLLA lon="107.8699098078" lat="37.44097370465" alt="28502.55" /> <Pt3dLLA lon="107.8688466847" lat="37.41326924299" alt="24139.26" /> <Pt3dLLA lon="107.7968216671" lat="37.3697228282" alt="1700.445" /> <Pt3dLLA lon="107.7632774887" lat="37.40827770853" alt="27760.18" /> <Pt3dLLA lon="107.7492233503" lat="37.42311615045" alt="31563.41" /> <Pt3dLLA lon="107.7440959916" lat="37.43555113232" alt="32279.34" /> </控制点></标绘消息></事件>---------------------------确定 ---------------------------我要把返回的结果截取成我要的样式。 我日常用的类,正则还是有一些问题。不过解析你这个应该没问题。把要解析的字符串复制到文本reg.txt里面了import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.util.regex.Matcher;import java.util.regex.Pattern;public class CopyOfGetProperty { public void service(){ BufferedReader br = new BufferedReader(new InputStreamReader(getInputStream("reg.txt"))); String nextLine = ""; try { while( (nextLine=br.readLine())!=null ){ if(!getExportString(nextLine).equals("")){ System.out.println(getExportString(nextLine)); } } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private String getExportString(String nextLine){ String lon = getMatchString(nextLine,"Pt3dLLA","lon"); String lat = getMatchString(nextLine,"Pt3dLLA","lat"); String alt = getMatchString(nextLine,"Pt3dLLA","alt"); if(lon.equals("") && lat.equals("") && alt.equals("")){ /* * 如果name和title不存在则返回空字符串 */ return ""; } StringBuffer buffer = new StringBuffer(""); buffer.append(lon); buffer.append(","); buffer.append(lat); buffer.append(","); buffer.append(alt); return buffer.toString(); } private String getMatchString(String nextLine,String tag,String attr){ String match = ""; // String reg = "<" + tag + "[^<>]*?\\s" + attr + "=['\"]?(.*?)['\"]?\\s.*?>"; String reg = "<" + tag + "[^<>]*?\\s" + attr + "=['\"]{1}(.*?)['\"]{1}.*>"; Matcher m = Pattern.compile(reg).matcher(nextLine); if(m.find()){ match = m.group(1); } return match; } private InputStream getInputStream(String name){ InputStream is = ClassLoader.getSystemResourceAsStream(name); return is; } public static void main(String[] args) { CopyOfGetProperty demo = new CopyOfGetProperty(); demo.service(); } } var x='<事件 事件类型=\'2048\' 消息值=\'3\' 对象ID=\'0\' 参数1=\'0\' 参数2=\'0\'><标绘消息 plottype="贴地面标绘" msgtype="标绘结束">'; x+='<结束类型 type="完成" />'; x+='<控制点 num="8">'; x+='<Pt3dLLA lon="107.7446494565" lat="37.45078285974" alt="28132.07" />'; x+='<Pt3dLLA lon="107.8470409767" lat="37.4706619983" alt="23114.81" />'; x+='<Pt3dLLA lon="107.8699098078" lat="37.44097370465" alt="28502.55" />'; x+='<Pt3dLLA lon="107.8688466847" lat="37.41326924299" alt="24139.26" />'; x+='<Pt3dLLA lon="107.7968216671" lat="37.3697228282" alt="1700.445" />'; x+='<Pt3dLLA lon="107.7632774887" lat="37.40827770853" alt="27760.18" />'; x+='<Pt3dLLA lon="107.7492233503" lat="37.42311615045" alt="31563.41" />'; x+='<Pt3dLLA lon="107.7440959916" lat="37.43555113232" alt="32279.34" />'; x+='</控制点>'; x+='</标绘消息>'; x+='</事件>';(x).replace(/lon="(.*?)"\slat="(.*?)"\salt="(.*?)"/ig,function($0,$1,$2,$3){document.write($1+","+$2+","+$3+";"+"\n") }); 用正则表达式可以做到package Test;import java.util.ArrayList;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Test { static List<String> lsLon = new ArrayList<String>(); static List<String> lsLat = new ArrayList<String>(); static List<String> lsAlt = new ArrayList<String>(); private static List<String> regExList(String s, String regEx, List<String> ls) { Pattern pat = Pattern.compile(regEx); Matcher mat = pat.matcher(s); while (mat.find()) { String str = mat.group(); ls.add(str.substring(5, str.length())); } return ls; } public static void main(String[] args) { String s = "\"<事件 事件类型='2048' 消息值='3' 对象ID='0' 参数1='0' 参数2='0'><标绘消息 plottype=\"贴地面标绘\" msgtype=\"标绘结束\">" + "<结束类型 type=\"完成\" />" + " <控制点 num=\"8\">" + "<Pt3dLLA lon=\"107.7446494565\" lat=\"37.45078285974\" alt=\"28132.07\" />" + "<Pt3dLLA lon=\"107.8470409767\" lat=\"37.4706619983\" alt=\"23114.81\" />" + "<Pt3dLLA lon=\"107.8699098078\" lat=\"37.44097370465\" alt=\"28502.55\" />" + "<Pt3dLLA lon=\"107.8688466847\" lat=\"37.41326924299\" alt=\"24139.26\" />" + "<Pt3dLLA lon=\"107.7968216671\" lat=\"37.3697228282\" alt=\"1700.445\" />" + "<Pt3dLLA lon=\"107.7632774887\" lat=\"37.40827770853\" alt=\"27760.18\" />" + "<Pt3dLLA lon=\"107.7492233503\" lat=\"37.42311615045\" alt=\"31563.41\" />" + "<Pt3dLLA lon=\"107.7440959916\" lat=\"37.43555113232\" alt=\"32279.34\" />" + " </控制点>" + "</标绘消息>"; String regLon = "lon=\"\\d*.\\d*"; regExList(s, regLon, lsLon); String regLat = "lat=\"\\d*.\\d*"; regExList(s, regLat, lsLat); String regAlt = "alt=\"\\d*.\\d*"; regExList(s, regAlt, lsAlt); for (int i = 0; i < lsLon.size(); i++) { System.out.println(lsLon.get(i) + "," + lsLat.get(i) + "," + lsAlt.get(i) + ";"); } }} 对JavaScript , 你那个数据不是来自网页信息吗/ java 没有include? 求几个数的最大两个值? MANIFEST.MF 是干什么用的? 通过eclipse 打包需要注意什么? Socket题目,真正的高手请赐教,谢谢 关于I/O的问题,各位仁兄救命啊!!!! 如何打印出当前的时间? java里如何调用vb控件? 需要JBuilder 9的弟兄们,赶快到以下地址下载!速度还不错.... 帮帮我...怎样使用james邮件服务器?? 问题多多,过来人指点迷经!不胜感激 用 js 做excle的回归分析操作!地图校准 我是新手对构造函数感到困惑,哪位大神能解释下吗?
---------------------------
来自网页的消息
---------------------------
<事件 事件类型='2048' 消息值='3' 对象ID='0' 参数1='0' 参数2='0'><标绘消息 plottype="贴地面标绘" msgtype="标绘结束">
<结束类型 type="完成" />
<控制点 num="8">
<Pt3dLLA lon="107.7446494565" lat="37.45078285974" alt="28132.07" />
<Pt3dLLA lon="107.8470409767" lat="37.4706619983" alt="23114.81" />
<Pt3dLLA lon="107.8699098078" lat="37.44097370465" alt="28502.55" />
<Pt3dLLA lon="107.8688466847" lat="37.41326924299" alt="24139.26" />
<Pt3dLLA lon="107.7968216671" lat="37.3697228282" alt="1700.445" />
<Pt3dLLA lon="107.7632774887" lat="37.40827770853" alt="27760.18" />
<Pt3dLLA lon="107.7492233503" lat="37.42311615045" alt="31563.41" />
<Pt3dLLA lon="107.7440959916" lat="37.43555113232" alt="32279.34" />
</控制点>
</标绘消息>
</事件>
---------------------------
确定
---------------------------
我要把返回的结果截取成我要的样式。
不过解析你这个应该没问题。把要解析的字符串复制到文本reg.txt里面了
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class CopyOfGetProperty {
public void service(){
BufferedReader br = new BufferedReader(new InputStreamReader(getInputStream("reg.txt")));
String nextLine = "";
try {
while( (nextLine=br.readLine())!=null ){
if(!getExportString(nextLine).equals("")){
System.out.println(getExportString(nextLine));
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private String getExportString(String nextLine){
String lon = getMatchString(nextLine,"Pt3dLLA","lon");
String lat = getMatchString(nextLine,"Pt3dLLA","lat");
String alt = getMatchString(nextLine,"Pt3dLLA","alt");
if(lon.equals("") && lat.equals("") && alt.equals("")){
/*
* 如果name和title不存在则返回空字符串
*/
return "";
}
StringBuffer buffer = new StringBuffer("");
buffer.append(lon);
buffer.append(",");
buffer.append(lat);
buffer.append(",");
buffer.append(alt);
return buffer.toString();
}
private String getMatchString(String nextLine,String tag,String attr){
String match = "";
// String reg = "<" + tag + "[^<>]*?\\s" + attr + "=['\"]?(.*?)['\"]?\\s.*?>";
String reg = "<" + tag + "[^<>]*?\\s" + attr + "=['\"]{1}(.*?)['\"]{1}.*>";
Matcher m = Pattern.compile(reg).matcher(nextLine);
if(m.find()){
match = m.group(1);
}
return match;
}
private InputStream getInputStream(String name){
InputStream is = ClassLoader.getSystemResourceAsStream(name);
return is;
}
public static void main(String[] args) {
CopyOfGetProperty demo = new CopyOfGetProperty();
demo.service(); }
}
x+='<结束类型 type="完成" />';
x+='<控制点 num="8">';
x+='<Pt3dLLA lon="107.7446494565" lat="37.45078285974" alt="28132.07" />';
x+='<Pt3dLLA lon="107.8470409767" lat="37.4706619983" alt="23114.81" />';
x+='<Pt3dLLA lon="107.8699098078" lat="37.44097370465" alt="28502.55" />';
x+='<Pt3dLLA lon="107.8688466847" lat="37.41326924299" alt="24139.26" />';
x+='<Pt3dLLA lon="107.7968216671" lat="37.3697228282" alt="1700.445" />';
x+='<Pt3dLLA lon="107.7632774887" lat="37.40827770853" alt="27760.18" />';
x+='<Pt3dLLA lon="107.7492233503" lat="37.42311615045" alt="31563.41" />';
x+='<Pt3dLLA lon="107.7440959916" lat="37.43555113232" alt="32279.34" />';
x+='</控制点>';
x+='</标绘消息>';
x+='</事件>';
(x).replace(/lon="(.*?)"\slat="(.*?)"\salt="(.*?)"/ig,function($0,$1,$2,$3){
document.write($1+","+$2+","+$3+";"+"\n")
});
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Test {
static List<String> lsLon = new ArrayList<String>();
static List<String> lsLat = new ArrayList<String>();
static List<String> lsAlt = new ArrayList<String>(); private static List<String> regExList(String s, String regEx,
List<String> ls) {
Pattern pat = Pattern.compile(regEx);
Matcher mat = pat.matcher(s);
while (mat.find()) {
String str = mat.group();
ls.add(str.substring(5, str.length()));
}
return ls;
} public static void main(String[] args) {
String s = "\"<事件 事件类型='2048' 消息值='3' 对象ID='0' 参数1='0' 参数2='0'><标绘消息 plottype=\"贴地面标绘\" msgtype=\"标绘结束\">"
+ "<结束类型 type=\"完成\" />"
+ " <控制点 num=\"8\">"
+ "<Pt3dLLA lon=\"107.7446494565\" lat=\"37.45078285974\" alt=\"28132.07\" />"
+ "<Pt3dLLA lon=\"107.8470409767\" lat=\"37.4706619983\" alt=\"23114.81\" />"
+ "<Pt3dLLA lon=\"107.8699098078\" lat=\"37.44097370465\" alt=\"28502.55\" />"
+ "<Pt3dLLA lon=\"107.8688466847\" lat=\"37.41326924299\" alt=\"24139.26\" />"
+ "<Pt3dLLA lon=\"107.7968216671\" lat=\"37.3697228282\" alt=\"1700.445\" />"
+ "<Pt3dLLA lon=\"107.7632774887\" lat=\"37.40827770853\" alt=\"27760.18\" />"
+ "<Pt3dLLA lon=\"107.7492233503\" lat=\"37.42311615045\" alt=\"31563.41\" />"
+ "<Pt3dLLA lon=\"107.7440959916\" lat=\"37.43555113232\" alt=\"32279.34\" />"
+ " </控制点>" + "</标绘消息>"; String regLon = "lon=\"\\d*.\\d*";
regExList(s, regLon, lsLon);
String regLat = "lat=\"\\d*.\\d*";
regExList(s, regLat, lsLat);
String regAlt = "alt=\"\\d*.\\d*";
regExList(s, regAlt, lsAlt); for (int i = 0; i < lsLon.size(); i++) {
System.out.println(lsLon.get(i) + "," + lsLat.get(i) + "," + lsAlt.get(i) + ";");
}
}
}