10月底到深圳来找工作,一直没有给人念想。然后我就在国际文化大厦宇商网做起了销售,一边找着工作。
我想我没有机会(因为是二流本科),就自己创造机会吧。每搞定一个客户就想把他当作自己的一个机会。
所以一直跟客户套近乎。
其中有一个蓝天科技的公司,问我能不能写个程序来整理歌词。如果行,我可以取得面试机会,还会注册为我们宇商网的会员。
我花了二个小时,搞定了。
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
public class LrcTimeFormat implements Comparable<LrcTimeFormat> {
String str;
// java先执行static体
private int hour;
private int min;
private int sec;
public LrcTimeFormat(String str) {
this.str = str;
hour = Integer.parseInt(str.substring(1, 3));// subString从第一个位置算,第二个位置不算
min = Integer.parseInt(str.substring(4, 6));// subString从第一个位置算,第二个位置不算
sec = Integer.parseInt(str.substring(7, 9));// subString从第一个位置算,第二个位置不算
}
@Override
public int compareTo(LrcTimeFormat ltf) {
if (this.hour > ltf.hour) {
return 1;
} else if (this.hour == ltf.hour) {
if (this.min > ltf.min) {
return 1;
} else if (this.min == ltf.min) {
if (this.sec > ltf.sec) {
return 1;
} else if (this.sec == this.sec) {
return 0;
} else {
return -1;
}
} else {
return -1;
}
} else {
return -1;
}
}
@Override
public String toString() {
return str;
}
}
主类实现:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class SortLrc {
private File lrcFile = null;
private String lrcDir = "";
private JFileChooser dirChoose = new JFileChooser();
private JFileChooser fileChoose = new JFileChooser();
private JFileChooser chooser = new JFileChooser();
private JButton saveButton = new JButton("保存路径");
private JButton selectButton = new JButton("选择lrc文件");
private JLabel saveLable = new JLabel("d:");
private JLabel selectLable = new JLabel("d:");
private JPanel panelButton = new JPanel();
private JPanel panelLabel = new JPanel();
private JPanel panelSort = new JPanel();
private JButton sortButton = new JButton("排序歌词");
public SortLrc() {
JFrame frame = new JFrame("歌词文件整理");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 选择目录,选择文件的话注释掉这行。
dirChoose.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
fileChoose.setFileSelectionMode(JFileChooser.FILES_ONLY);
saveButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int retValue = dirChoose.showSaveDialog(saveButton);
if (retValue == JFileChooser.APPROVE_OPTION) {
lrcDir = dirChoose.getSelectedFile().toString();
saveLable.setText(dirChoose.getSelectedFile().toString());
}
}
});
selectButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int retValue = fileChoose.showSaveDialog(selectButton);
if (retValue == JFileChooser.APPROVE_OPTION) {
lrcFile = fileChoose.getSelectedFile();
selectLable
.setText(fileChoose.getSelectedFile().toString());
}
}
});
sortButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
sortLrc();
} catch (IOException iOE) {
System.out.println("整理歌词失败");
}
}
});
panelButton.add(selectButton);
panelLabel.add(selectLable);
panelButton.add(saveButton);
panelLabel.add(saveLable);
panelSort.add(sortButton);
panelLabel.setLayout(new GridLayout(2, 2, 20, 20));
panelButton.setLayout(new GridLayout(2, 2, 20, 20));
Container pane = frame.getContentPane();
pane.setLayout(new BorderLayout());
pane.add(panelButton, BorderLayout.WEST);
pane.add(panelLabel, BorderLayout.CENTER);
pane.add(panelSort, BorderLayout.SOUTH);
frame.setPreferredSize(new Dimension(400, 300));
frame.pack();
frame.setLocation(400, 200);
frame.setVisible(true);
}
private void sortLrc() throws IOException {
ArrayList<LrcTimeFormat> sortList = new ArrayList<LrcTimeFormat>();
FileReader fr = new FileReader(lrcFile);
BufferedReader br = new BufferedReader(fr);
StringBuilder sb = new StringBuilder();
String str = "";
while ((str = br.readLine()) != null) {
if (!isTimeLine(str)) {
sb.append(str + "\n");
} else {
speLine(str, sortList);
}
}
Collections.sort(sortList);
for (Iterator<LrcTimeFormat> iterator = sortList.iterator(); iterator
.hasNext();) {
LrcTimeFormat lrcTimeFormat = (LrcTimeFormat) iterator.next();
sb.append(lrcTimeFormat + "\n");
}
File sortFile =new File(lrcDir +"\\"+ lrcFile.getName());
System.out.println(sortFile.getAbsolutePath());
FileWriter fw = new FileWriter(sortFile);
fw.write(sb.toString());
br.close();
fr.close();
fw.close();
}
private static Boolean isTimeLine(String str) {
String timeRege = ".*\\[[\\d]{2}\\:[\\d]{2}\\.[\\d]{2}\\].*";
return str.matches(timeRege);
}
private static void speLine(String str, ArrayList<LrcTimeFormat> list) {
String timeRege = "\\[[\\d]{2}\\:[\\d]{2}\\.[\\d]{2}\\]";
Pattern p = Pattern.compile(timeRege);
Matcher m = p.matcher(str);
String tail = str.replaceAll("\\[.*\\]", "");
while (m.find()) {
String lineUnit = m.group() + tail;
// System.out.println(lineUnit);
list.add(new LrcTimeFormat(lineUnit));
}
}
public static void main(String[] args) {
new SortLrc();
}
}
资源:
排序前lrc:
[00:00.00]光辉岁月
[00:09.00]词 \ 周治平.何启弘. 曲 \ 黄家驹. 主唱 \ 黄家驹.
[00:18.00]
[00:28.00]一生要走多远的路程
[00:32.00]经过多少年
[00:36.00]才能走到终点
[00:41.00]梦想需要多久的时间
[00:45.00]多少血和泪
[00:49.00]才能慢慢实现
[02:09.00][00:54.00]天地间任我展翅高飞
[02:15.00][01:00.00]谁说那是天真的预言
[03:59.00][03:23.00][02:22.00][01:07.00]风中挥舞狂乱的双手
[04:03.00][03:27.00][02:25.00][01:11.00]写下灿烂的诗篇
[04:06.00][03:30.00][02:29.00][01:14.00]不管有多么疲倦
[04:12.00][03:36.00][02:35.00][01:20.00]潮来潮往世界多变迁
[04:16.00][03:40.00][02:38.00][01:23.00]迎接光辉岁月
[04:19.00][03:43.00][02:41.00][01:27.00]为它一生奉献
[01:42.00]一生要走多远的路程
[01:47.00]经过多少年
[01:50.00]才能走到终点
[01:55.00]孤独的生活很需要时间
[02:00.00]只要肯期待
[02:03.00]希望不会幻灭
[04:37.00]
[04:45.00]
[04:46.00]本歌词由网友秋风提供
排序后要求lrc:
[ti:恰似你的温柔]
[ar:蔡琴]
[al:蔡琴——畅销金曲专辑第三集]
[by:炫网资讯 Liuxuan.com]
[00:00.00]★杰盛唱片★ ★蔡琴——畅销金曲专辑★第三集★
[00:06.00]★蔡琴——畅销金曲★ ●恰似你的温柔●
[00:12.00]词曲:梁弘志
[00:24.27]某年某月的某一天
[00:30.38]就像一张破碎的脸
[00:36.53]难以开口道再见
[00:43.16]就让一切走远
[00:49.49]这不是件容易的事
[00:55.46]我们却都没有哭泣
[01:00.95]让它淡淡的来
[01:06.89]让它好好的去
[01:11.77]到如今年复一年
[01:15.41]我不能停止怀念
[01:18.94]怀念你怀念从前
[01:23.79]但愿那海风再起
[01:27.59]只为那浪花的手
[01:31.28]恰似你的温柔
[01:36.92]music ★蔡琴——畅销金曲★ ●恰似你的温柔●
[01:56.00]词曲:梁弘志
[01:59.17]某年某月的某一天
[02:05.09]就像一张破碎的脸
[02:10.49]难以开口道再见
[02:16.90]就让一切走远
[02:23.26]这不是件容易的事
[02:29.25]我们却都没有哭泣
[02:34.94]让它淡淡的来
[02:40.47]让它好好的去
[02:45.29]到如今年复一年
[02:49.10]我不能停止怀念
[02:52.48]怀念你怀念从前
[02:57.28]但愿那海风再起
[03:00.97]只为那浪花的手
[03:04.74]恰似你的温柔
[03:12.49]music ★蔡琴——畅销金曲★ ●恰似你的温柔●
[03:19.00]词曲:梁弘志
[03:21.17]到如今年复一年
[03:25.00]我不能停止怀念
[03:28.39]怀念你怀念从前
[03:33.22]但愿那海风再起
[03:36.91]只为那浪花的手
[03:40.66]恰似你的温柔
[03:56.48]○The End○
复习了一遍java文件操作,Comparable接口等实现。不用查api之前就知道java会为我们提供哪些接口。
实现效果自认为还行。也只能这样了,因为发给对方过后,他就不理人了。留了句:是金子,就会发光的。
给了我莫大的安慰。