我目前正在尝试将.txt
文件(字幕文件)解析为.csv
表。
文件中的示例:
22
00:03:36,717 --> 00:03:38,344
(thunder crashing)
我认为使用StringList
类型是我最好的选择,我几乎准备好了所有信息。唯一剩下的就是,我希望第二行有起始位置。和结束位置。是一个单独的字符串,彼此跟随,像这样:
22
00:03:36,717
00:03:38,344
(thunder crashing)
我已经知道如何使用substring()
方法,但我无法弄清楚如何在特定索引处添加新String。 set
函数会覆盖它,而appends
函数只能将它添加到列表的末尾。
后见之明是否更好地使用了ArrayList
?我试过这样做,但后来我无法弄清楚如何使用实际的元素。我有这个:
String s[] = loadStrings("subtest.txt");
ArrayList lines= new ArrayList();
for (int i=0; i<s.length; i++){
lines.add(s[i]);
}
在ArrayList
的单独元素中添加了所有行。现在我无法将该元素作为字符串访问。如果我想得到一个特定元素的长度,它会告诉我length()
函数不存在,我也不能将该元素保存为字符串。
感谢您对此进行调查!
答案 0 :(得分:0)
问题在于,默认情况下,ArrayList
包含Object
的列表,而不是String
的列表,因此您从中获取的对象将属于错误的数据类型。由于ArrayList.get()
的结果是Object
,因此您无法将其分配给String
或调用String
类的方法(例如String.length()
)。
你想要的是type generics。因为ArrayList是泛型类,所以可以使用泛型语法指定它应该包含的对象类型:
ArrayList<String> lines = new ArrayList<String>(); //creates a list of Strings
处理在documentation of the ArrayList class中提供了更完整的示例。
答案 1 :(得分:-1)
考虑XY problem,您可能需要用新行替换" --> "
,如下所示:
public static void main ( String [ ] args ) throws IOException
{
Path path = Paths.get("yourFilePath.txt");
Charset charset = StandardCharsets.UTF_8;
String content = new String(Files.readAllBytes(path), charset);
content = content.replaceAll(" --> ", "\n");
Files.write(path, content.getBytes(charset));
}
1
00:00:00,000 --> 00:00:01,567
Anteriormente en Vikings...
2
00:00:01,765 --> 00:00:03,298
Voy a ir de nuevo a saquear Inglaterra,
3
00:00:03,300 --> 00:00:05,233
para la venganza de la
destrucción del asentamiento.
1
00:00:00,000
00:00:01,567
Anteriormente en Vikings...
2
00:00:01,765
00:00:03,298
Voy a ir de nuevo a saquear Inglaterra,
3
00:00:03,300
00:00:05,233
para la venganza de la
destrucción del asentamiento.
注意:这样就会覆盖输入文件。