您的位置:首页 > 移动开发 > Android开发

Android初探(一)关于LRC文件解析

2013-04-17 20:46 197 查看
关于LRC文件的解析大概总结如下:
获取LRC文件
得到输入流
使用正则表达式,逐行解析,生成HashMap或自定义格式
packagedaodao.FileReader;

importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;

importandroid.R.string;

importdaodao.Models.LrcModel;
importdaodao.Models.LrcModelList;

/**
*@authoryedaodao
*LRC解析类
*/
publicclassLrcReader{
privatestaticLrcReaderinstance=null;
privateLrcModelListlmlist;

/**
*得到对象实例
*/
publicstaticLrcReadergetInstance()
{
if(instance==null)
instance=newLrcReader();
returninstance;
}
/**
*获取LRC文件流
*@paramiStream
*@throwsIOException
*/
publicvoidgetLrc(InputStreamiStream)throwsIOException
{
InputStreamReaderiStreamReader=newInputStreamReader(iStream);
BufferedReaderreader=newBufferedReader(iStreamReader);
lmlist=newLrcModelList();
Stringline=null;
while((line=reader.readLine())!=null){
parseLine(line);
}
}
/**
*逐行解析,将结果存入自定义的LrcModel中
*@paramline
*/
publicvoidparseLine(Stringline)
{
Stringreg="\\[(\\d{2}:\\d{2}\\.\\d{2})\\]";
Patternpattern=Pattern.compile(reg);
Matchermatcher=pattern.matcher(line);
while(matcher.find()){
Stringtime=matcher.group();
LrcModellModel=newLrcModel();
lModel.setCurrentTime(parseTime(time));
lModel.setCurrentContent(line.substring(time.length()));
lmlist.addEle(lModel);
}
}
/**
*解析时间,转换为毫秒格式
*@paramtime
*@return
*/
publicIntegerparseTime(Stringtime)
{
Stringtemp=time.substring(1,time.length()-1);
String[]s=temp.split(":");
intmin=Integer.parseInt(s[0]);
String[]ss=s[1].split("\\.");
intsec=Integer.parseInt(ss[0]);
intmill=Integer.parseInt(ss[1]);
returnmin*60*1000+sec*1000+mill*10;
}
publicStringgetLrcContent()
{
returnlmlist.getContent();
}
}


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: