当前位置: 代码迷 >> Java相关 >> <新人>怎么去掉文本中的时间戳
  详细解决方案

<新人>怎么去掉文本中的时间戳

热度:503   发布时间:2016-04-22 21:05:06.0
<新人求助>如何去掉文本中的时间戳?
将lrc文件中的时间戳去掉,保存为txt文件

lrc文件
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1
00:00:16,240 --> 00:00:18,020
你干什么
Hey, what are you doing?

2
00:00:22,140 --> 00:00:23,380
天哪
Jesus!

3
00:00:23,730 --> 00:00:24,560
你看清肇事的车了吗
Did you get a good look?

4
00:00:24,560 --> 00:00:26,670
只看到是辆蓝色丰田佳美
Blue Toyota Camry, it's all I saw.

5
00:00:26,820 --> 00:00:28,340
是沃顿家的狗
It's the Wharton's dog.

6
00:00:28,670 --> 00:00:30,920
-天哪  -他撑不了多久了
- Oh, man. - He's not gonna make it.
..............
..省略..................
899
00:53:14,120 --> 00:53:15,350
跟你说  弗雷迪
Tell you what, Freddie?

900
00:53:15,810 --> 00:53:16,950
我要再来一份
Yes I will.

901
00:53:18,010 --> 00:53:19,940
我今天格外饿
I'm feeling a hunger today.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
txt文本范例
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
1
Hey, what are you doing?
你干什么

2
Jesus!
天哪

3
Did you get a good look?
你看清肇事的车了吗

4
Blue Toyota Camry, it's all I saw.
只看到是辆蓝色丰田佳美

5
It's the Wharton's dog.
是沃顿家的狗

6
- Oh, man. - He's not gonna make it.
-天哪  -他撑不了多久了

..................

.....................
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
楼主新人,很多都不懂,只有一些思路,但不知如何实现 希望能给些意见

思路一:
看到时间戳有规律,都是以"00:"开头,共有12+5+12共29个字符(空格和符号都算上),想到用String类的方法,文本转为String,找到"00:",向后取26个字符,去除,但好像只有split能用,正则表达式不太懂,无法下手

思路二:
想到bufferedReader.readLine()方法.既然是一行一行读取,独到包含有"00:"这一行时不把它写入文本不就行了?
根据思路写下如下代码:

public class ReadUtils {

public static void main(String[] args) {
   try {   
            String encoding = "UTF-8"; // 字符编码(可解决中文乱码问题 )   
            File file = new File("f:/作业/House_Of_Cards_S01E01.lrc");   
          if (file.isFile() && file.exists()) {   
                  InputStreamReader read = new InputStreamReader(   
                      new FileInputStream(file), encoding);
                  
              BufferedReader bufferedReader = new BufferedReader(read); 
              FileWriter fw = new FileWriter("buf_copy.txt");
       BufferedWriter bufw = new BufferedWriter(fw);
                String lineTXT=null;
                while(((lineTXT = bufferedReader.readLine()).contains("00:"))){
                 bufw.write(lineTXT);
                    String str=    lineTXT.toString().trim(); 
                    System.out.println(str); 
                }
                read.close();
              
                bufw.close();
}
} catch (Exception e) {   
           System.out.println("读取文件内容操作出错");   
            e.printStackTrace();   
       }  
   
   }   

}
结果控制台和txt文件都只有"1",不明白为什么不循环  while(((lineTXT = bufferedReader.readLine()).contains("00:")))这是自己瞎写的,没有编译错误,可我看不出啥错,为什么不向下循环?
为什么while ((lineTXT = bufferedReader.readLine()) != null)这个就能循环呢?
求指点,可能都是小错误,小知识点,轻拍
------解决方案--------------------
没看清要求,你把输出的那个位置改成*.txt就好了
  相关解决方案