`

正则表达式练习: android 歌词解析lrc 转 txt 代码

 
阅读更多
//主要用到了java io 的基本知识 和 正则表达式
package com.su;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import android.widget.Toast;

public class LrcManager {
	
public void save(String content,String filePath) {//保存lrc
		
		filePath = "/sdcard/lrc1.txt";
	
		if(!filePath.endsWith(".txt") && !filePath.endsWith(".log")) 
    		filePath += ".txt";
		
		File file = new File(filePath); 
    	try {
    		OutputStream outstream = new FileOutputStream(file);
    		OutputStreamWriter out = new OutputStreamWriter(outstream);
    		out.write(content);
    		out.close();
    	} catch (java.io.IOException e) {
    		e.printStackTrace();
	    }
		
	}
    public String read(){//读取lrc
		String path = "/sdcard/lrc1.txt";
		String content="";
	    	//打开文件
	    	File file = new File(path);
	    	//如果path是传递过来的参数,可以做一个非目录的判断
	    	if (file.isDirectory()){
	    		//Toast.makeText(TestLrcActivity.this, "没有指定文本文件!", 1000).show();
	    	}
	    	else{
	    		try {
	    			InputStream instream = new FileInputStream(file); 
	    			if (instream != null) {
	    				InputStreamReader inputreader = new InputStreamReader(instream);
	    				BufferedReader buffreader = new BufferedReader(inputreader);
	    				String line;
					//分行读取
	    				while (( line = buffreader.readLine()) != null) {
	    					content += line + "\n";
	    				}				
	    			instream.close();
	    		    }
	    			
	    		}
	    		catch (java.io.FileNotFoundException e) {
	    			//Toast.makeText(TestLrcActivity.this, "文件不存在", Toast.LENGTH_SHORT).show();
	    		} catch (IOException e) {
	    			e.printStackTrace();
	    		}
	}
	    	return content;
	}
	
	public void deallrc(){//lrc to txt
		
		Pattern pattern = Pattern.compile("\\[\\d{2}:\\d{2}.\\d{2}\\]");//Pattern+Matcher类构成正则表达式
		File f1 = new File("/sdcard/lrc1.txt");
        File f2 = new File("/sdcard/lrc2.txt");
        BufferedReader reader1 = null;
        FileWriter write1 = null;
        try {
            reader1 = new BufferedReader(new FileReader(f1));

            write1 = new FileWriter(f2);

            String line = null;
      
            while ((line = reader1.readLine()) != null) {
            
                for (int i = 0; i < line.length(); i++) {
                	   
                      Matcher m=pattern.matcher(line);  
                      line = m.replaceAll("");
                      line = line.replaceAll("\\[offset:\\d{3}\\]","");//正则表达式使用replaceAll()方法
                      line = line.replace("ti","歌名");//替换字符串
                      line = line.replace("ar","歌手");
                      line = line.replace("al","专辑");
                      line = line.replace("by","Lrc歌词作者");
                      //line = line.replace("]","");
                      line = line.replace("url","歌词来源");
                      line = line.replace("null","");
                 }
                if (line!="\n"&&line!=null&&line!=""&&line!="null") {
                	 System.out.println(line);
                     write1.write(line+"\n");
				}
                
               
            }
        } catch (IOException e) {
            System.out.println("出现异常");
        } finally {
            try {
                reader1.close();
                write1.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
      }

        
	}
        
  }

}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics