txt文本分割器排序

不规则的文本文件
1-2-5-4-6-19
4-3-1-8-10
1-2-6-7-10
1-20
如何排序输出?
1-20
1-2-5-4-6-19
4-3-1-8-10
1-2-6-7-10
也就是按最后一个数字的大小排序txt文本文件
谢谢
采纳的答案
还有另外一种做法就是了:写一个类让它存着要比较的行的内容,并在构造器里就记下该行最后一个数字的值。让这个类实现Comparable&T&接口,就可以很方便的直接用Collections.sort()来排序。
以前用其它语言写过一组类似的程序,也是这两种办法都用过。这里:
import java.io.*;
import java.util.*;
public class SortFile {
private static void printUsage() {
System.out.println("Usage: java SortFile filename");
private static boolean verifyArgs(String[] args) {
return (1 &= args.length) && (new File(args[0]).isFile());
public static void main(String[] args) {
if (!verifyArgs(args)) {
printUsage();
System.exit(1);
List&Line& lines = new ArrayList&Line&();
BufferedReader in =
in = new BufferedReader(new InputStreamReader(new FileInputStream(args[0])));
String s =
while (null != (s = in.readLine())) {
lines.add(new Line(s));
} catch(Exception e) {
e.printStackTrace();
System.exit(1);
} finally {
if (null != in) {
in.close();
Collections.sort(lines);
for (Line l : lines) {
// do whatever with the sorted lines
System.out.println(l.getText());
class Line implements Comparable&Line& {
private int compareK
public Line(String text) {
this.text =
pareKey = Integer.parseInt(text.substring(text.lastIndexOf('-')));
public int compareTo(Line other) {
pareKey - pareK
public String getText() {
return this.
嗯,数据量大的时候这样用正则表达式可能会带来性能问题
不过原问的描述太模糊了。如果有很强的保证说输入的文本文件一定是每行都为横杠分隔的数字,那么楼上的方法会非常合适。
另外如果是.NET的话可以用从右向左的匹配模式,只匹配结尾的\d+的话效率也不会很低。不过这边是Java就是了呃呵呵。
楼上的回答不错, 但是数据多了, 可能性能有点问题, 楼主写的是: 也就是按最后一个数字的大小排序txt文本文件 。
那么我觉得可以这么抽取排序的数字
private int extractLastNumber(String s) {&
&& int idx = s.lastIndexOf('-');
&& return Integer.parseInt(s.subString(idex+1));& //自己确定下idx
}&
这样性能会提高不少。
排序可以利用java.util.Collections类里的sort()方法。这组方法有两个重载,一个是按照自然顺序来对List&T&排序,另一个是指定一个自定义的Comparator&T&来指定排序方式。可以通过匿名内部类来方便的写出这里需要的Comparator&T&的实现,其中可以用正则表达式来抽取每行最后的数字。
SortFile.java:
import java.io.*;
import java.util.*;
import java.util.regex.*;
public class SortFile {
private static void printUsage() {
System.out.println("Usage: java SortFile filename");
private static boolean verifyArgs(String[] args) {
return (1 &= args.length) && (new File(args[0]).isFile());
public static void main(String[] args) throws Exception {
if (!verifyArgs(args)) {
printUsage();
System.exit(1);
List&String& lines = new ArrayList&String&();
BufferedReader in =
in = new BufferedReader(new InputStreamReader(new FileInputStream(args[0])));
String line =
while (null != (line = in.readLine())) {
lines.add(line);
} finally {
if (null != in) {
in.close();
Collections.sort(lines, new Comparator&String&() {
private Pattern extractLastNumberPattern = pile("\\d+$");
private int extractLastNumber(String s) {
Matcher m = this.extractLastNumberPattern.matcher(s);
if (!m.find()) {
throw new RuntimeException("Invalid line format: missing number at the end of the line.");
return Integer.parseInt(m.group());
public int compare(String first, String second) {
int num1 = extractLastNumber(first);
int num2 = extractLastNumber(second);
return num2 - num1; // for descending order
public boolean equals(Object obj) {
return obj.getClass().equals(this.getClass());
for (String s : lines) {
// do whatever with the sorted lines
System.out.println(s);
已解决问题
未解决问题txt文本能完成数据排序吗_数据挖掘吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:3,153贴子:
txt文本能完成数据排序吗收藏
如图,一般方法是导入exl再导出,图中的按日期排序是从近期到远期,请问有人试过txt自身进行排序吗?
当然可以,楼主图中的数据文件是标准的CSV文件结构,把扩展名改成.CSV就变成CSV文件了,各种数据分析软件都支持CSV文件,速度也比数据库操作更快。如果只是排序的话,自己写段脚本程序来实现也很简单。
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或我的txt文档里是数字,我怎么才能排序?谁能给个能自动排序的软件?
我的txt文档里是数字,我怎么才能排序?谁能给个能自动排序的软件?
谢谢,本人很急!!
导入excel,进行排序,很方便的
其他回答 (1)
全选复制到word里就如排序
相关知识等待您来回答
软件领域专家Java输出流在txt文件中的换行控制_Linux编程_Linux公社-Linux系统门户网站
你好,游客
Java输出流在txt文件中的换行控制
来源:Linux社区&
有时候需要将一段内容输出到txt文件,在程序中将内容字符串拼接好,包括 \t 以及 \n 等符号,然后利用java.io中的writer将字符串写到txt文件中,本以为很简单的一件事,结果打开txt文件一看,格式完全是乱的,txt根本就没有识别我在程序中写的 \n 符号,所以没办法,只能变通一下:
利用BufferedReader的readLine()方法进行换行读入,然后逐行write
OutputStream s = resp.getOutputStream();OutputStreamWriter writer = new OutputStreamWriter(os, "GBK");PrintWriter ut = new PrintWriter(writer);
String result = (String)AjaxDispatcher.execute(params);InputStream is = new ByteArrayInputStream(result.getBytes());InputStreamReader isr = new InputStreamReader(is); BufferedReader reader = new BufferedReader(isr);
String str = ""; while((str = reader.readLine()) != null){ out.println(str);}out.flush();......
相关阅读:
JAVA 插入排序(直接插入)
排序算法(JAVA实现):冒泡排序法和插入排序法
Java实现直接插入排序
Java实现选择排序
排序算法(Java实现):选择排序法和快速排序法
JAVA 选择排序
相关资讯 & & &
& (04/02/:52)
图片资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款使用Excel中的另存为将Excel表格转换成TXT文本
时间: 16:54  来源:办公族Excel教程  点击:
本方法适用于Excel2007,Excel2010 以及Excel2013三个版本,下面,我以Excel2013版本为例来给大家演示一遍,如何使用中的另存为将Excel表格转换成TXT文本。
方法一:表格另存为TXT格式后以制表符分隔开的方式排序
用Excel2013打开我们需要转换格式的工作表,单击&文件&按钮。
在打开的窗口中单击&另存为&按钮,然后选择&计算机&。
此时会弹出一个&另存为&对话框,我们选择存放在&桌面&,然后单击&保存类型&框右侧的下拉按钮,在这里小编建议大家选择&Unicode 文本(*.txt)&,这样能解决很多格式不同的问题,最后单击&保存&按钮。
现在会弹出一个Microsoft Excel 提示框,我们单击&是&按钮,确认另存文件。
此时桌面上会出现我们保存的TXT文件,打开它,我们可以看到这样的效果,怎么样,还比较理想吧?
方法二:表格另存为TXT格式后以逗号隔开的方式排序
这里我们只讲与上一种方法不同的地方。在&另存为&对话框中,我们选择保存类型为&CSV(逗号分隔)(*.csv)&,然后保存文件。这样就能在桌面上找到这个文件,将它的后缀名修改为&.txt&,此时会弹出&重命名&警告框,我们单击&是&按钮,确认修改后缀名。完成之后打开这个文件,就会看到如下效果。
提示:可能不同的版本在打开&另存为&对话框的操作上略有不同,大家可以参考上面的步骤来进行操作。
本类最热新闻

我要回帖

更多关于 txt免费文本 的文章

 

随机推荐