Предположим, что мой код работает. Однако этот небольшой фрагмент кода:
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));
}
}
Есть идеи?
Спасибо, ребята.
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());
Чтобы удалить все пробелы и сгенерировать одну 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);
readLine
должен игнорировать новые строки. можете ли вы показать код, который вы используете для вывода?
Существует несколько вариантов,
// 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());
}