当前位置: 技术问答>java相关
急问一个字符串操作的问题(菜鸟急问)
来源: 互联网 发布时间:2015-06-04
本文导语: 问题是这样的。有文本如下:#Software: Microsoft Internet Information Services 5.0 #Version: 1.0 #Date: 2002-04-24 00:06:10 #Fields: date time c-ip cs-username s-computername s-ip s-port cs-method cs-uri-stem cs-uri-query sc-status cs-host cs(User-Agent...
问题是这样的。有文本如下:#Software: Microsoft Internet Information Services 5.0
#Version: 1.0
#Date: 2002-04-24 00:06:10
#Fields: date time c-ip cs-username s-computername s-ip s-port cs-method cs-uri-stem cs-uri-query sc-status cs-host cs(User-Agent)
2002-04-24 00:06:10 202.198.78.92 - FTPSERVER 10.50.21.61 80 GET /Default.asp - 200 d61.jlu.edu.cn Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1)
2002-04-24 00:06:10 202.198.78.92 - FTPSERVER 10.50.21.61 80 GET /logo.js - 304 d61.jlu.edu.cn Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1)
如何跳过开头的五行文字,然后分别提取出日期,时间,ip等字段存储在字符串里边呢?如何对一个字符串的内容和另一个字符串进行匹配发现有没有包含后者呢?
弱问题,谢谢大虾
#Version: 1.0
#Date: 2002-04-24 00:06:10
#Fields: date time c-ip cs-username s-computername s-ip s-port cs-method cs-uri-stem cs-uri-query sc-status cs-host cs(User-Agent)
2002-04-24 00:06:10 202.198.78.92 - FTPSERVER 10.50.21.61 80 GET /Default.asp - 200 d61.jlu.edu.cn Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1)
2002-04-24 00:06:10 202.198.78.92 - FTPSERVER 10.50.21.61 80 GET /logo.js - 304 d61.jlu.edu.cn Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1)
如何跳过开头的五行文字,然后分别提取出日期,时间,ip等字段存储在字符串里边呢?如何对一个字符串的内容和另一个字符串进行匹配发现有没有包含后者呢?
弱问题,谢谢大虾
|
流读入文本,封装inputStream为Reader,采用readLine方法一行一行读取
判断第一个字符是否为#,是则不处理
非则取日期时间和ip
取日期时间和ip的方法可以采用正则表达式
正则表达式API下载和使用参考:
http://www-900.ibm.com/developerWorks/java/l-regp/part1/index.shtml
匹配日期:
String expressDate = "([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})";
匹配时间
String expressTime = "([0-9]{4}):([0-9]{1,2}):([0-9]{1,2})";
匹配IP
String expressIP = "([0-9]{1,2,3}).([0-9]{1,2,3}).([0-9]{1,2,3}).([0-9]{1,2,3})";
如果你使用的是jdk1.4,不用下载ORO或者RE等表达式API了
你采用jdk1.4的表达式API就可以
使用很简单
判断第一个字符是否为#,是则不处理
非则取日期时间和ip
取日期时间和ip的方法可以采用正则表达式
正则表达式API下载和使用参考:
http://www-900.ibm.com/developerWorks/java/l-regp/part1/index.shtml
匹配日期:
String expressDate = "([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})";
匹配时间
String expressTime = "([0-9]{4}):([0-9]{1,2}):([0-9]{1,2})";
匹配IP
String expressIP = "([0-9]{1,2,3}).([0-9]{1,2,3}).([0-9]{1,2,3}).([0-9]{1,2,3})";
如果你使用的是jdk1.4,不用下载ORO或者RE等表达式API了
你采用jdk1.4的表达式API就可以
使用很简单
|
String s="aa,bb";
int port=s.indexOf(",");
String first,behind;
first=s.substring(0,port);
behind=s.substring(port+1);
int port=s.indexOf(",");
String first,behind;
first=s.substring(0,port);
behind=s.substring(port+1);
|
我觉得你的还是用BufferedReader比较好,如果你的文本内容本来就是一个流的话。BufferedReader可以读一行,你的内容也正好一行为一个逻辑单元。
|
学习!学习!