我有一个方法,我用来从网站提取信息,并让它目前转到TXT文件。我正在寻找类似于输出的信息,当我执行print语句以显示结果时,如下所示:
QB 3 Anderson, Derek ACT TDS -- INT -- YDS -- RTG 0.0 CAR
QB 2 Barkley, Matt ACT TDS 0 INT 4 YDS 300 RTG 44.6 PHI
QB 5 Bethel-Thompson, McLeod ACT TDS 0 INT 0 YDS 0 RTG 0.0 SF
在我的文本文件中,我将其显示为:
QB3Anderson, DerekACTTDS--INT--YDS--RTG0.0CARQB2Barkley, MattACTTDS0INT4YDS300RTG44.6PHIQB5Bethel-Thompson, McLeodACTTDS0INT0YDS0RTG0.0SF
任何建议(请注意这是Java)
答案 0 :(得分:1)
使用BufferedReader读取每一行。每一行都是一个字符串。然后将每行添加到列表中并对列表进行排序。
BufferedReader reader = new BufferedReader(new FileReader("text.txt"));
String line;
ArrayList<Entry> list = new ArrayList<Entry>();
while((line = reader.readLine()) != null) {
list.add(new Entry(line));
}
Collections.sort(list);
// list is sorted!
然后你需要Entry类:
import java.util.StringTokenizer;
public class Entry implements Comparable<Entry> {
private String qb;
private String number;
private String name;
public Entry(String text) {
StringTokenizer st = new StringTokenizer("", " ");
this.qb = st.nextToken();
this.number = st.nextToken();
this.name = st.nextToken();
// ... etc
}
@Override
public int compareTo(Entry other) {
return this.name.compareTo(other.name);
}
}
您的类需要实现Comparable,以便Collections.sort()知道如何排序。此外,实现equals()和hashCode()总是一个好主意。
答案 1 :(得分:0)
在我看来,你的问题实际上是关于解析和格式化而不是排序?
要设置这样的文字格式,您可以使用扫描仪轻松匹配每个QB,如此
String text = "QB3Anderson, DerekACTTDS--INT--YDS--RTG0.0CARQB2Barkley, MattACTTDS0INT4YDS300RTG44.6PHIQB5Bethel-Thompson, McLeodACTTDS0INT0YDS0RTG0.0SF";
Scanner scanner = new Scanner(text);
scanner.useDelimiter("QB");
while(scanner.hasNext()){
String qb = "QB" + scanner.next();
System.out.println(qb);
}
将输出:
QB3Anderson,DerekACTTDS - INT - YDS - RTG0.0CAR
QB2Barkley,MattACTTDS0INT4YDS300RTG44.6PHI
QB5Bethel-Thompson,McLeodACTTDS0INT0YDS0RTG0.0SF
然后,对于每个qb字符串,您可以使用String.subString()和String.indexOf()在您想要的字段上进行简单的模式匹配,例如。
String number = qb.substring(2, 3);
String name = qb.substring(3, qb.indexOf("ACT"));
String INT = qb.substring(qb.indexOf("INT") + 3, qb.indexOf("YDS") );
解析完所有字段后,按照您想要的格式和顺序打印它们