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

Mitglied: ppmk22

ppmk22 (Level 1) - Jetzt verbinden

20.02.2010 um 22:49 Uhr, 4116 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
Windows 8
Textdatei umformatieren
gelöst Frage von bladeyyyWindows 81 Kommentar

Hey, Ich habe folgendes Problem: Ein Programm exportiert bei mir eine Textdatei in dem Format: erste Zeile mit unnötigem ...

Batch & Shell
Filtern von Textdatei
gelöst Frage von MaxPauerBatch & Shell2 Kommentare

Hallo Zusammen, ich hätte ein Problem bei welchem ihr mir hoffendlich helfen könnt. Ich ich will eine Liste erstellen ...

Windows 10

Wiederherstellung von überschriebener Textdatei

gelöst Frage von Zippo97Windows 105 Kommentare

Hallo Freunde, Mir ist leider ein böser Fehler passiert. Ich habe in einen Textdokument einen verdammt wichtigen Code gespeichert. ...

Batch & Shell

Batch Textdatei Spaltenweise auslesen

Frage von PinkFLuffyUnicornBatch & Shell7 Kommentare

hi, ist es irgendwie möglich anstatt eine Textdatei via Batch Spaltenweise auszulesen und nicht zeilenweise wie das normal ganz ...

Neue Wissensbeiträge
Rechtliche Fragen
Unitymedia siegt vor dem BGH
Information von transocean vor 6 StundenRechtliche Fragen3 Kommentare

Moin, lt. einem aktuellen Urteil darf UM Mietrouter seiner Kunden weiterhin in Hotspots verwandeln. Nachlesen kann man das hier. ...

Router & Routing
Der "768k-Day" kommt
Information von LordGurke vor 1 TagRouter & Routing2 Kommentare

Für Leute, die Router mit BGP-Fulltable betreiben vielleicht ein interessanter Hinweis: Die IPv4-Fulltable erreicht voraussichtlich innerhalb der nächsten 2-3 ...

Debian

Partition angeblich voll, dabei aber noch nicht mal zur Hälfte belegt

Anleitung von diemilz vor 1 TagDebian8 Kommentare

Hallo zusammen, ich habe ein kleines Problem: Ich habe auf einem physischen Debian Linux Server als ZoneMinder-Server (HP ProLiant ...

Windows 7
Updategängelung auf Windows 10, die zweite
Information von Penny.Cilin vor 6 TagenWindows 73 Kommentare

Hallo, da Windows 7 im kommenden Jahr nicht mehr supportet wird, werden Nutzer von Window 7 home premium wieder ...

Heiß diskutierte Inhalte
HTML
Bild hochladen mit html auf die Webseite
gelöst Frage von WorldoftheitHTML63 Kommentare

Will eine Seite entwickeln im Internet aber Das Bild wird nicht angezeigt woran kann das liegen? Wäre für jede ...

Vmware
Terminalserver VM - Videos ruckeln
Frage von easyriderVmware29 Kommentare

Hallo zusammen, wir haben einen (free) ESXi 5.5 auf einem HP DL 380 G8 im Einsatz. Darauf läuft, unter ...

Festplatten, SSD, Raid
Harddisk kaputt, was sagt mir ChrystalDiskInfo
gelöst Frage von InfoSeekerFestplatten, SSD, Raid23 Kommentare

Hallo zusammen, Mein Rechner lahmt. Ich stell mir die Frage woran es liegt und bin der Meinung es ist ...

Backup
Veeam Community Edition
gelöst Frage von dgrebnerBackup23 Kommentare

Hallo Zusammen, kann jemand seine praktischen Erfahrungswerte mit der Veeam-Community Edition mit mir teilen? Es gab dazu ja schon ...