假设我的代码有效。但是,这段代码:
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
输出此结果的代码在main方法中,并且是:
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));
}
}
有什么想法吗?
提前谢谢你们。
答案 0 :(得分: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());
答案 1 :(得分:0)
readLine
应该忽略换行符。
你可以显示你用于输出的代码吗?
答案 2 :(得分: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());
或许您应该完全将该逻辑提取到自定义方法中。
修改强> 加上这个,
if (foo.get(j) != null && foo.get(j).trim().length() > 0) {
System.out.println(foo.get(j).trim());
}
答案 3 :(得分: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);