java中用split()分割字符串,把分割后的字段存入一个数组或者集合怎么弄,文本的行数很多要考虑这个

如下是我要处理的文本里面的几行(是4行),有高手帮我看一下吗?
202.113.95.245,local4,warning,2011-11-18,10:22:52,SR6604 %%10SHELL/4/CMD(l): task:vt0 ip:202.113.88.108 user:zzg command:sa
202.113.95.245,local4,warning,2011-11-18,10:22:47,SR6604 %%10SHELL/4/CMD(l): task:vt0 ip:202.113.88.108 user:zzg command:quit
202.113.95.245,local4,warning,2011-11-18,10:22:27,SR6604 %%10SHELL/4/CMD(l): task:vt0 ip:202.113.88.108 user:zzg command:un ip rout 58.251.57.0 255.255.255.0 221.239.84.13
202.113.95.245,local4,warning,2011-11-18,10:22:02,SR6604 %%10SHELL/4/CMD(l): task:vt0 ip:202.113.88.108 user:zzg command:un ip rout 211.151.146.0 255.255.255.0 221.239.84.13
如果是split分割是每个字符串分割成一个数组,我要的是分割成的各个字段成一个数组,不是简单的split(",")!

1) 定义几个ArrayList,用于保存IP集合、localX集合、log级别集合,时间集合、以及最后的消息集合
2) 对每一行,用split(","),存入一个临时数组,把各部分添加进1)中定义的相应集合中。追问

能不能来一小段程序示范一下呀?这个思路倒是差不多,实现的时候出现点问题。

追答

什么问题?

import java.util.*;
import java.io.*;

public class MyTest1 {
public static void main(String[] args) throws Exception {
List ipList = new ArrayList();
List localList = new ArrayList();
List logList = new ArrayList();
List timeList = new ArrayList();
List msgList = new ArrayList();

BufferedReader in = new BufferedReader(new FileReader("e:\\test.txt"));
String line = "";
String[] tmp = null;
while((line=in.readLine())!=null){
tmp = line.split(",");
ipList.add(tmp[0]);
localList.add(tmp[1]);
logList.add(tmp[2]);
timeList.add(tmp[3] + " " + tmp[4]);
msgList.add(tmp[5]);
}

//ipList中的内容
System.out.println(ipList);
//localList中的内容
System.out.println(localList);
//logList中的内容
System.out.println(logList);
//timeList中的内容
System.out.println(timeList);
}
}

追问

按","分割的话,最后面的那个字段还要分开SR6604 %%10SHELL/4/CMD(l): task:vt0 ip:202.113.88.108 user:zzg command:un ip rout 211.151.146.0 255.255.255.0 221.239.84.13
分为ip:202.113.88.108和user:zzg和command:un ip rout 211.151.146.0 255.255.255.0 221.239.84.13,这样我认为比如说ip:202.113.88.108这个是从ip开始到下一个" "(空格为止),这一段怎么分,因为我是在做毕设,最近赶着要交,谢谢回答的朋友

追答

import java.util.*;
import java.io.*;

public class MyTest1 {
List ipList = new ArrayList();
List localList = new ArrayList();
List logList = new ArrayList();
List timeList = new ArrayList();
List ip2List = new ArrayList();
List userList = new ArrayList();
List comList = new ArrayList();

public static void main(String[] args) throws Exception {
MyTest1 test = new MyTest1();
test.process();
}

public void process() throws Exception{
BufferedReader in = new BufferedReader(new FileReader("e:\\test.txt"));
String line = "";
String[] tmp = null;
while((line=in.readLine())!=null){
tmp = line.split(",");
ipList.add(tmp[0]);
localList.add(tmp[1]);
logList.add(tmp[2]);
timeList.add(tmp[3] + " " + tmp[4]);
processMsg(tmp[5]);
}

//ipList中的内容
System.out.println(ipList);
//localList中的内容
System.out.println(localList);
//logList中的内容
System.out.println(logList);
//timeList中的内容
System.out.println(timeList);
System.out.println(ip2List);
System.out.println(userList);
System.out.println(comList);
}

private void processMsg(String msg){
String[] tmp = msg.split(" ");
if(tmp.length<6){
System.out.println("消息格式错误!");
return ;
}

ip2List.add(tmp[3].split(":")[1]);
userList.add(tmp[4].split(":")[1]);
comList.add(tmp[5].split(":")[1]);
}
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-19
先分割成4个数组 然后对一个数组循环一次取出来放一起不就好了么,哪有一个方法就能解决问题的啊
第2个回答  2012-05-19
String[] splitString=s.split(",");
相似回答