我正在學習關於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