Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Textdatei parsen

Frage Entwicklung Java

Mitglied: ppmk22

ppmk22 (Level 1) - Jetzt verbinden

20.02.2010 um 22:49 Uhr, 4039 Aufrufe, 1 Kommentar

Hallo Forum

Ich versuche mich gerade an folgendem Problem.

Ich lese eine txt ein.

Inhalt sieht in etwas so aus

text text text text
text text
15448 text text


X1|---1---3---2---1|---1---3---2---1|---1---3---2---1|---1---3---2---1|
X2|2--2---3---2-3-1|---1-1-3---2---1|-2-1---3-2-2---1|---1---3---2---1|
X3|-1-1---3---2---1|---1---3---2---1|---1---3---2---1|---1-2-1---2---1|

text text

X1|---1---3---2---1|---1---3---2---1|---1---3---2---1|---1---3---2---1|
X3|---1---3---2---1|---1---3---2---1|---1---3---2---1|---1---3---2---1|

text text

X2|2--2---3---2-3-1|---1-1-3---2---1|
X3|-1-1---3---2---1|---1---3---2---1|


usw.

Daraus soll eine ArrayList werden, das sich so zusammen setzt.
aus - soll 0 werden
aus 1 soll a werden
aus 2 soll b werden
aus 3 soll c werden

Es soll jeweils das fortlaufende Zeichen, ab dem ersten | , aus den reihen in die Liste gepackt werden.
Beispiel:
Reihe X1 erste Zeichen nach dem | ist "-"
Reihe X2 erste Zeichen nach dem | ist "2"
Reihe X3 erste Zeichen nach dem | ist "-"
Reihe X1 zweite Zeichen nach dem | ist "-"
Reihe X2 zweite Zeichen nach dem | ist "-"
Reihe X3 zweite Zeichen nach dem | ist "1"
usw.

[0] 0,b,0
[1] 0,0,a
[2] 0,0,0

nun ist im zweiten Block kein X2, dies soll aber trotzdem mit "0" gefüllt werden

Ich weiss nicht mehr weiter und auch schon nicht was ich alles probiert habe.

Hier ist mein letzter Stand der Dinge.

01.
package filereader; 
02.
 
03.
import java.io.BufferedReader; 
04.
import java.io.FileReader; 
05.
import java.io.IOException; 
06.
import java.util.StringTokenizer; 
07.
 
08.
public class Main { 
09.
 
10.
    public static void main(String[] args) { 
11.
 
12.
 
13.
        String file = "H:\\test.txt"; 
14.
 
15.
        String zeile = null; 
16.
        try { 
17.
            BufferedReader in = new BufferedReader( 
18.
                    new FileReader(file)); 
19.
            try { 
20.
                while ((zeile = in.readLine()) != null) { 
21.
 
22.
                    StringTokenizer stringT = new StringTokenizer(zeile, ""); 
23.
 
24.
                    while (stringT.hasMoreTokens()) { 
25.
                        String token = stringT.nextToken().trim(); 
26.
 
27.
                            if (token.startsWith("X1|")) 
28.
29.
                               test("X1", token.substring(3)); 
30.
31.
                            if (token.startsWith("X2|")) 
32.
33.
                                test("X2",token.substring(3)); 
34.
35.
                            if (token.startsWith("X3|")) 
36.
37.
                                test("X3",token.substring(3)); 
38.
39.
40.
41.
                 
42.
                in.close(); 
43.
            } catch (IOException e) { 
44.
                System.out.println("Read error " + e); 
45.
46.
        } catch (IOException e) { 
47.
            System.out.println("Open error " + e); 
48.
49.
50.
 
51.
 
52.
 
53.
    private static void test(String Sound,String token) 
54.
55.
        int i = 0; 
56.
        System.out.println(Sound + " "); 
57.
        StringTokenizer sT = new StringTokenizer(token, "|"); 
58.
        // System.out.println(sT); 
59.
        while (sT.hasMoreTokens()) { 
60.
            i++; 
61.
            token = sT.nextToken().trim(); 
62.
//            System.out.println(sT.countTokens() + " " + token); 
63.
            System.out.println(i + " " + token); 
64.
 
65.
 
66.
             
67.
            if(sT.hasMoreElements() == false){ 
68.
 
69.
                 
70.
                 
71.
72.
73.
         
74.
75.
 
76.
 
77.
78.
 
Bin für alle Vorschläge dankbar

LG
PP
Mitglied: dog
21.02.2010 um 03:19 Uhr
Mit Java kenne ich mich nicht aus, aber in PHP in etwa so:
01.
<?php 
02.
 
03.
	function convstr($str
04.
05.
		$conv = array(); 
06.
		for ($i=0; $i < 16; $i++) {  
07.
			switch (@$str[$i]) { 
08.
				case '1'
09.
					$conv[] = 'a'
10.
					break
11.
				case '2'
12.
					$conv[] = 'b'
13.
					break
14.
				case '3'
15.
					$conv[] = 'c'
16.
					break
17.
				default
18.
					$conv[] = 0; 
19.
					break
20.
21.
22.
		return $conv
23.
24.
	 
25.
	function fill(&$array,$n,$lowerKey,$upperKey
26.
27.
		for ($i=$lowerKey; $i <= $upperKey; $i++) { 
28.
			$nullArr = convstr('----------------'); 
29.
			$array[$n][$i] = array_merge($nullArr,$nullArr,$nullArr,$nullArr); 
30.
31.
32.
 
33.
	$in = <<<STR 
34.
text text text text 
35.
text text 
36.
15448 text text 
37.
 
38.
 
39.
X1|---1---3---2---1|---1---3---2---1|---1---3---2---1|---1---3---2---1| 
40.
X2|2--2---3---2-3-1|---1-1-3---2---1|-2-1---3-2-2---1|---1---3---2---1| 
41.
X3|-1-1---3---2---1|---1---3---2---1|---1---3---2---1|---1-2-1---2---1| 
42.
 
43.
text text 
44.
 
45.
X1|---1---3---2---1|---1---3---2---1|---1---3---2---1|---1---3---2---1| 
46.
X3|---1---3---2---1|---1---3---2---1|---1---3---2---1|---1---3---2---1| 
47.
 
48.
text text 
49.
 
50.
X2|2--2---3---2-3-1|---1-1-3---2---1| 
51.
X3|-1-1---3---2---1|---1---3---2---1| 
52.
 
53.
 
54.
usw. 
55.
STR; 
56.
 
57.
	preg_match_all('/X([1-3])\|(?:([\-123]{16})(?:\|([\-123]{16})(?:\|([\-123]{16}))?(?:\|([\-123]{16}))?)?)\|/', $in, $match); 
58.
		 
59.
	$buildRes = array(); 
60.
	 
61.
	$lastX = 0; 
62.
	$n = 0; 
63.
	for ($i=0; $i < count($match[0]); $i++) {  
64.
		$x = $match[1][$i]; 
65.
		if($x < $lastX
66.
			$n++; 
67.
		if($lastX > 0 && ($lastX+1) != $x
68.
			fill($buildRes,$n,$lastX,$x); 
69.
		$buildRes[$n][$x] = array_merge(convstr($match[2][$i]),convstr($match[3][$i]),convstr($match[4][$i]),convstr($match[5][$i])); 
70.
		$lastX = $x
71.
72.
?>
Array 
    [0] => Array 
            [1] => Array 
                    [0] => 0 
                    [1] => 0 
                    [2] => 0 
                    [3] => a 
                    [4] => 0 
                    [5] => 0 
  <--- snip ---> 
                    [63] => 0 
 
 
)
Das ganze wieder rückwärts über:
01.
	function restr($key
02.
03.
		if($key === "a"
04.
			return '1'
05.
		if($key === "b"
06.
			return '2'
07.
		if($key === "c"
08.
			return '3'
09.
		return '-'
10.
11.
	 
12.
	 
13.
	 
14.
	function rebuild(&$array
15.
16.
		foreach ($array as $block => $xs) { 
17.
			foreach ($xs as $x => $letters) { 
18.
				echo 'X'.$x
19.
				for ($i=0; $i < count($letters); $i++) {  
20.
					if($i % 16 == 0) 
21.
						echo '|'
22.
					echo restr($letters[$i]); 
23.
24.
				echo "|\n"
25.
26.
			echo "\n\n"
27.
28.
29.
	 
30.
	rebuild($buildRes);
ergibt:

X1|---1---3---2---1|---1---3---2---1|---1---3---2---1|---1---3---2---1| 
X2|2--2---3---2-3-1|---1-1-3---2---1|-2-1---3-2-2---1|---1---3---2---1| 
X3|-1-1---3---2---1|---1---3---2---1|---1---3---2---1|---1-2-1---2---1| 
 
 
X1|----------------|----------------|----------------|----------------| 
X2|----------------|----------------|----------------|----------------| 
X3|---1---3---2---1|---1---3---2---1|---1---3---2---1|---1---3---2---1| 
 
 
X2|2--2---3---2-3-1|---1-1-3---2---1|----------------|----------------| 
X3|-1-1---3---2---1|---1---3---2---1|----------------|----------------|
Du siehst, ein paar Dinge musst du noch anpassen
Bitte warten ..
Ähnliche Inhalte
Sonstige Systeme
Software zum Parsen von Emails und PDFs
Frage von Zero01Sonstige Systeme12 Kommentare

Hallo, ich suche für die Firma bei der ich zur Zeit arbeite eine Software mit der man Emails und ...

Batch & Shell
Ini file powershell parse
gelöst Frage von kotb92Batch & Shell3 Kommentare

Hallo zusammen, Ich habe ein paar solche 'ini' Dateien die ich mit Powershell in eine csv Datei parsen möchte. ...

Windows 7
Microsoft.NET Framework Parser Konfigurationsfehler
gelöst Frage von DasJulianWindows 72 Kommentare

Schönen guten Tag alle zusammen, und zwar bin ich heute früher von meiner Arbeit nachhause gekommen und wollte dann ...

Windows Server
Wie SQL-Server Verzeichnis parsen lassen?
Frage von YotYotWindows Server5 Kommentare

Hallo alle! Es gibt zwar keine SQL-Server-Rubrik hier, aber vielleicht kann mir hier ja trotzdem jemand helfen: Ich bekomme ...

Neue Wissensbeiträge
Linux

Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde

Information von Frank vor 7 StundenLinux12 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 1 TagBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 1 TagHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 2 TagenMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Heiß diskutierte Inhalte
Router & Routing
Zwei Netzwerke erstellen
Frage von bunteblumeRouter & Routing14 Kommentare

Hallo Zusammen, Ich möchte gerne ein backup von einem bestimmten Folder welcher auf dem Server regelmässig synchronisiert wird auf ...

Windows 10
Alle Programme mit bestimmtem Namen automatisch (per GPO) deinstallieren
gelöst Frage von lordofremixesWindows 1012 Kommentare

Hallo zusammen, gibt es eine Möglichkeit, alle Programme beginnend mit z.B. "Dell" im Namen per Script und somit per ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...

Linux
Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde
Information von FrankLinux12 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...