我正在学习关于Java中的文本处理,类中的示例是从文件中读取数据,执行文本处理,将数据(List)写回到文件。我理解这个例子,他将每行读入一个字符串并将该行添加到列表中,并使用.split(“”),然后使用Collections.sort对返回其中一个字符串的数据进行排序。但是,如果有逗号和多余的空白,我不知道如何格式化这些。我读了正则表达式,但不知道是否需要这样做,因为我们没有涉及,并且正在使用trim()方法。但是,如果我将trim()方法放在实现Comparator的类的比较方法中,该方法将传递给Collections.sort,它将不会传递格式正确的字符串,因为compare会返回一个int。所以我想我正在寻找一些通用的指导方针来帮助完成这项任务,但并没有完全给出答案。谢谢。在Java中排除逗号,空格,排序
编辑: 赋值是按顺序编写列表,删除重复项和额外的空白。
public class TextProcess
{
public static void main(String[] args)
{
try {
// get data from class file
List<String> data = TextFileUtils.readTextFile("addressbooktest.txt");
// process data. Really just the same address book that looks like
// firstName, lastName, phone, email
// with the commas, but deleting duplicates, the extra whitespace, and sorting alphabetically
Collections.sort(data, FIRSTNAMECOMPARATOR);
// write to output file
TextFileUtils.writeTextFile(data, "parsedaddressbooktest.txt");
}
catch (IOException e) {
e.printStackTrace();
}
}
private static final FirstNameComparator FIRSTNAMECOMPARATOR = new FirstNameComparator();
}
class FirstNameComparator implements Comparator<String>
{
public int compare(String s1, String s2)
{
String[] st1 = s1.split(",");
String[] st2 = s2.split(",");
String firstName1 = st1[0].toUpperCase().trim();
String lastName1 = st1[1].toUpperCase().trim();
String firstName2 = st2[0].toUpperCase().trim();
String lastName2 = st2[1].toUpperCase().trim();
if (!(firstName1.equals(firstName2)))
return firstName1.compareTo(firstName2);
else
return lastName1.compareTo(lastName2);
}
}
而不是描述的话你的代码中看到的,只是更好的展示给我们。另外,如果我们不知道这个任务是什么,我们该如何帮助完成这项任务? – Thomas 2010-07-18 17:03:01
感谢这段时间的片段,你能用文字总结工作流程吗? 你想说的是: 1.从文件中读取。 2.处理文本 - 即对它们进行排序(按?排序) 3.回写到文件。 (写什么?) – yclian 2010-07-18 17:10:45
像'//这里是下面这行'这样的注释代码将会帮助你和其他人。 – 2010-07-18 17:12:33