wangflood

精心维护一个技术blog,为了工作,也是爱好。

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  14 Posts :: 19 Stories :: 8 Comments :: 0 Trackbacks

 

 

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(13));// subString从第一个位置算,第二个位置不算
        min = Integer.parseInt(str.substring(46));// subString从第一个位置算,第二个位置不算
        sec = Integer.parseInt(str.substring(79));// 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(222020));
        panelButton.setLayout(
new GridLayout(222020));

        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(400300));
        frame.pack();
        frame.setLocation(
400200);
        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会为我们提供哪些接口。
实现效果自认为还行。也只能这样了,因为发给对方过后,他就不理人了。留了句:是金子,就会发光的。
给了我莫大的安慰。
posted on 2010-11-13 07:43 wangflood 阅读(169) 评论(0)  编辑  收藏 所属分类: java

只有注册用户登录后才能发表评论。


网站导航: