Список стандартизации Java

1

Предположим, что мой код работает. Однако этот небольшой фрагмент кода:

while ((line = input.readLine()) != null) {
    myList.add(line.replaceAll ("[^a-zA-Z0-9 ]", "").toLowerCase());
}

дает мне этот результат:

a b c d
123
abcdz
456
aa
b
c
dd

Желаемый результат:

abcd123abcdz456aabcdd

Код, выводящий этот результат, находится в основном методе и является:

for (int i = 0; i < args.length; i++) {
                    BufferedReader reader = new BufferedReader (new FileReader (args[i]));
                    List<String> foo = simplify(reader);
                        for (int j = 0; j < foo.size(); j++) {
                            System.out.println(foo.get(j));
                        }
                }

Есть идеи?

Спасибо, ребята.

Теги:
arrays
list
standardized

4 ответа

1
StringBuilder sb = new StringBuilder();
while ((line = input.readLine()) != null) {
    String s = line.replaceAll("[^a-zA-Z0-9 ]", "").toLowerCase();
    myList.add(s);
    sb.append(s.trim());
}

Затем распечатайте sb.toString().

System.out.println(sb.toString());

0

Чтобы удалить все пробелы и сгенерировать одну String из нескольких Strings ввода:

// initializing StringBuilder
StringBuilder sb = new StringBuilder();
// iterating over lines read by Reader
while ((line = input.readLine()) != null) {
    // appending line to StringBuilder
    sb.append(line);
}

// printing StringBuilder toString lowercased with replaced white space
String result = sb.toString().toLowerCase().replaceAll("\\s", "");
System.out.println(result);
0

readLine должен игнорировать новые строки. можете ли вы показать код, который вы используете для вывода?

  • 0
    Я не хочу использовать StringBuilder. Код, выводящий результат, предназначен для (int i = 0; i <args.length; i ++) {BufferedReader reader = new BufferedReader (new FileReader (args [i]))); List <String> foo = упрощение (читатель); for (int j = 0; j <foo.size (); j ++) {System.out.println (foo.get (j)); }}
  • 0
    Ах, тогда твоя проблема. Использование System.out.println означает, что вы добавляете разрыв строки после каждого элемента при генерации вывода. Вместо этого используйте System.out.print ().
Показать ещё 1 комментарий
0

Существует несколько вариантов,

// Add a trim call
myList.add(line.replaceAll ("[^a-zA-Z0-9 ]", "").toLowerCase().trim());

Или цепочка вызовов для замены

myList.add(line.replaceAll ("[^a-zA-Z0-9 ]", "").
    replace("\r", "").replace("\n","").toLowerCase());

Или, возможно, вы должны полностью извлечь эту логику в пользовательский метод.

EDIT добавьте это,

if (foo.get(j) != null && foo.get(j).trim().length() > 0) {
  System.out.println(foo.get(j).trim());
}
  • 0
    Я пробовал обе эти вещи, но все же новые строки печатаются
  • 1
    @ user3364788 Отредактировано на основе вашего обновления вопроса.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню