这是文字 -
CAR,标致,3008,12500
CAR,宝马,316,4995
CAR,福特,嘉年华,2995
我希望对此进行排序,并展示最便宜的车。但首先我需要将文本分开。 现在我知道你可以做text.split(“\ r \ n”);但这不起作用。有任何想法吗 ?
import java.io.BufferedReader;
import java.io.FileReader;
public class Vehicle {
public static void main(String[]args) throws Exception
{
FileReader file = new FileReader("C:/Users/Aaron/Documents/java/car_file.txt");
BufferedReader reader = new BufferedReader(file);
String text = "";
String line = reader.readLine();
while (line!= null)
{
text += line;
line = reader.readLine();
}
System.out.println(text);
String words[] = text.split(",|\r\n| ");
int count=words.length;
System.out.println(count);
}
}
答案 0 :(得分:1)
您似乎无法在换行符上拆分它的原因是,当您拨打reader.readLine()
时,它会移除换行符。
例如,说你有这个:
line one\nline two\n
在文本编辑器中,您会看到:
line one
line two
如果你String s = ""; s += reader.readLine(); s += reader.readLine();
,你最终会添加"第一行"第一次和"第二行"第二次,对于新的line oneline two
字符串。
import java.io.BufferedReader;
import java.io.FileReader;
public class Vehicle {
public static void main(String[]args) throws Exception
{
FileReader file = new FileReader("C:/Users/Aaron/Documents/java/car_file.txt");
BufferedReader reader = new BufferedReader(file);
String text = "";
String line = reader.readLine() +"\n";
while (line!= null)
{
text += line;
line = reader.readLine() +"\n";
}
System.out.println(text);
String lines[] = text.split("\n");
int count = lines.length;
System.out.println(count);
for(String line : lines) {
String words[] = line.split(",");
<<do something with words array>>
}
}
}
请记住,这不是解析此问题的最佳方法。如果您在SO上快速搜索,可以使用CSV阅读器库。
答案 1 :(得分:1)
您可以使用ArrayList of String
代替Array of String
,并执行以下操作:
List<String> words = new ArrayList<>();
while (line!= null)
{
words.add(line);
line = reader.readLine();
}
int count=words.size();
System.out.println(count);
或者,如果您不想使用List,您可以这样做:
while (line!= null)
{
text += line+"#";
line = reader.readLine();
}
System.out.println(text);
String words[] = text.split("#");
int count=words.length;
System.out.println(count);
答案 2 :(得分:0)
最好在循环中拆分每一行:
List<String[]> lineFields = new ArrayList<>();
while (line != null) {
list.add(line.split(",");
line = reader.readLine();
}
然后处理列表。