2016-12-18 2 views
0

Ich versuche derzeit, eine .txt Datei (Untertiteldatei) zu einer .csv Tabelle zu analysieren.Hinzufügen eines StringList-Elements zwischen vorhandenen Listenelementen in Bearbeitung

Beispiel aus der Datei:

22 
00:03:36,717 --> 00:03:38,344 
(thunder crashing) 

ich die StringList Typ dachte, mit war meine beste Wahl für das, und ich habe fast alle meine Informationen bereit. Das einzige, was übrig bleibt, ist, dass ich die zweite Zeile mit der Startposition haben möchte. und die Endpos. in separaten Strings zu sein, sie folgende, wie folgen aus:

22 
00:03:36,717 
00:03:38,344 
(thunder crashing) 

ich schon wissen, wie es mit der substring() Methode zu tun, aber ich kann nicht herausfinden, wie der neuen String zu einem bestimmten Index hinzuzufügen. Die set Funktion überschreibt es und die appends Funktion kann nur am Ende der Liste hinzufügen.

Ist die Verwendung einer ArrayList im Nachhinein besser? Ich habe versucht, das zu tun, aber dann konnte ich nicht herausfinden, wie man das eigentliche Element benutzt. Was ich habe, ist dies:

String s[] = loadStrings("subtest.txt"); 
ArrayList lines= new ArrayList(); 

for (int i=0; i<s.length; i++){ 
    lines.add(s[i]); 
} 

, die alle Linien in getrennten Elementen des ArrayList hinzugefügt. Jetzt kann ich jedoch nicht auf das Element als String zugreifen. Wenn ich die Länge eines bestimmten Elements erhalten möchte, sagt es mir, dass die length() Funktion nicht existiert und ich das Element auch nicht als eine Zeichenkette speichern kann.

Vielen Dank für den Blick!

+0

Wissen Sie nicht, wie man einen Arraylist benutzt? 'lines.get (0) .length()' erhält die Länge der ersten Zeichenkette ... Sie müssen die Zeichenkettenelemente aus der Liste holen ...Es gibt auch eine add-Methode der Arraylist-Klasse, mit der Sie eine Position angeben können, an der ein Wert eingefügt werden soll. –

+0

Und 'lines.set (0," first "+ lines.get (0))' wird die erste Position aktualisieren ... Es ist jedoch nicht wirklich klar, welche Ausgabe Sie erwarten oder warum Sie die Liste benötigen, wenn Sie bereits Habe das Array –

Antwort

-1

der XY problem Unter Berücksichtigung, müssen Sie wahrscheinlich " --> " mit einer neuen Zeile ersetzen, wie folgt aus:

MainP:

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)); 

    } 

Eingang:

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. 

Ausgang:

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. 

Hinweis: Auf diese Weise überschreiben Sie die Eingabedatei.

0

Das Problem ist, dass ArrayList standardmäßig eine Liste von Object s statt einer Liste von String s enthält, so dass die Objekte, die Sie daraus erhalten, vom falschen Datentyp sind. Da das Ergebnis von ArrayList.get() ein Object ist, können Sie es nicht einer String zuordnen oder Methoden der String Klasse darauf (wie String.length()) aufrufen.

Was Sie wollen, sind type generics. Da Arraylist eine generische Klasse ist, können Sie die Generika-Syntax verwenden, um die Art von Objekten angeben, sollte es halten:

ArrayList<String> lines = new ArrayList<String>(); //creates a list of Strings 

Verarbeitung gibt es ein vollständigeres Beispiel in ihrer documentation of the ArrayList class.

Verwandte Themen