拆分和排序字符串数组

时间:2014-06-10 05:52:26

标签: java arrays string

我试图拆分这个长博客字符串并对其进行排序:

"140.184.37.105 - - [08/Aug/2001:21:06:36 -0300] "GET /~csc226/outline.htm HTTP/1.0" 200 9748 "http://cs.stmarys.ca/~csc226/" "Mozilla/4.73 [en] (WinNT; U)""

我当前的代码肯定不起作用,我试图找出改进代码或使用不同方法解决此问题的方法。它获取了许多博客条目的数组,包括上面的一个。我主要是想弄清楚如何对数组进行排序,将日期显示为8月8日,ip地址为140.184.37.105等。

   void getString(int i)
   {
       return bin[i];
   }
   public void getIP(int i)
   {
      int IPlength = bin[i].length() - bin[i].indexOf("- -");
      String IP = bin[i].substring(0, bin[i].length()-IPlength);
   }
   void getDate(int i)
   {
      String Date = bin[i].substring(bin[i].indexOf('['), bin[i].indexOf(']'));
   }
   void getPage(int i)
   {
      String Page = bin[i].substring(bin[i].indexOf("GET"), bin[i].indexOf("1.0"));
   }

对不起,如果这个问题不重要,但我是新手,并且不知道如何处理或解决这个问题。

结果应如下所示:

ip地址:140.184.37.105

括号内的日期和时间:[08 / Aug / 2001:21:06:36 -0300]

引用请求的页面:" GET /~csc226/outline.htm HTTP / 1.0"

HTTP状态代码返回给客户端(200 =成功):200

2 个答案:

答案 0 :(得分:1)

如果您绝对想自己写,我建议您开始刷新regular expressions

但是,对于此类任务,我建议使用logstash之类的日志分析工具。

答案 1 :(得分:0)

假设您提供的字符串格式始终保持不变,请使用此140.184.37.105 - - [08/Aug/2001:21:06:36 -0300] "GET /~csc226/outline.htm HTTP/1.0" 200 9748 "http://cs.stmarys.ca/~csc226/" "Mozilla/4.73 [en] (WinNT; U)"

它实际上非常简单,你只需要熟悉java http://docs.oracle.com/javase/7/docs/api/java/lang/String.html中的String类方法

例如: -

public class HelloWorld{

static String s="140.184.37.105 - - [08/Aug/2001:21:06:36 -0300] \"GET /~csc226/outline.htm HTTP/1.0\" 200 9748 \"http://cs.stmarys.ca/~csc226/\" \"Mozilla/4.73 [en] (WinNT; U)";


     public static void main(String []args){
        System.out.println(getIp());
        System.out.println(getTime());

     }


     public static String getIp(){

         String sArr[]= s.split("-");
         return sArr[0];


     }

     public static String getTime(){


         return s.substring(21,46);

     }

  //more functions here   

}

如果您的String格式发生了变化,那么您可以使用正则表达式,这将帮助您识别和查找String中的模式。这是一个关于java http://www.vogella.com/tutorials/JavaRegularExpressions/article.html

中正则表达式的好教程