Я изучаю текстовую обработку в Java для класса, а пример в классе должен был считывать данные из файла, выполнять текстовую обработку, записывать данные (список) в файл. Я понимаю пример, в котором он читает в каждой строке строку String и добавляет эту строку в список и использует .split (""), а затем Collections.sort для сортировки данных, возвращающих одну из строк. Однако, если есть запятые и дополнительные пробелы, я не знаю, как их форматировать. Я читал в regex, но не был уверен, что это было необходимо, так как мы не закрыли это и собирались для метода trim(). Но если я положу метод trim() в методе сравнения моего класса, который реализует Comparator, который передается в Collections.sort, он не получит переданную правильно отформатированную строку, так как сравнение возвращает 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
Спасибо за фрагмент на этот раз, можете ли вы суммировать рабочий процесс в словах? Вы пытаетесь сказать, что: 1. Читайте из файла. 2. Обработать текст - т. Е. Отсортировать их (сортировать по?) 3. Написать обратно в файл. (напишите что?) – yclian
Комментирующий код типа '// вот что делает строка ниже, поможет вам и всем остальным. –