2006-09-02

正则表达式的应用

最近有点喜欢帮人了:)

问题:
有一个文本文件如下

A,1
A,2
A,3
B,4
B,5
C,6
C,7
C,8

每行有两个元素,以逗号分隔,例如(A和1),文件的行数未知第一个元素都是连续相同的(如AAABBCCC),没有混乱现象(如AABABCCC)逐行读这个文件需要要把第一个元素相同的第二元素抽出来,放在一个新new出来的ArrayList里面例如读前面三行,第一个元素都是A,那么就new一个ArrayList,把第二元素1,2,3放进去然后接着读,第一个元素变成B了,这个时候需要重新new一个新的ArrayList,把第二元素4,5放进去再读,第一个元素变成C,再new一个新的ArrayList,把第二元素6,7,8放进去
请教算法,谢谢了!

解决

//这个字符串代表你的文件内容
String input = "A,1\nA,2\nA,3\nB,1\nB,2\nB,3\nB,4";
public void testCSDN()
{
Pattern pattern = Pattern.compile("[\n]+");
String[] results = pattern.split(input);
Map target = new HashMap();
//这里设置一个开始字符,也可以修改成察看文件获取
String current = "A";
ArrayList currentList = new ArrayList();
for(String item : results)
{
String[] currentLine = Pattern.compile("[,| ]+").split(item);
if(!current.equals(currentLine[0]))
{
target.put(current, currentList);
current = currentLine[0];
currentList = new ArrayList();
}
currentList.add(currentLine[1]);
}
target.put(current, currentList);
System.out.println(target);
}

No comments: