Zeichenkette teilen vor + oder -

  • #1
F

Foradil1

Mitglied
Themenersteller
Dabei seit
15.11.2005
Beiträge
19
Reaktionspunkte
0
Moin, hab schon mehrere Funktionen ausprobiert aber noch kein brauchbares Ergebnis gefunden.
Mein Problem ist folgendes:

Ich habe eine Datei die viele Maschinenbefehle und die dazugehörigen Kettenmaße enthält. Diese lade ich per file(dateixyz) in ein Array. So weit so gut. Nun möchte ich jede Zeile einzeln auswerten und dazu ist es nötig, daß ich die Koordinatenmaße (Kettenmaße) in Absolute Koordinatenmaße umrechne.
Mein Problem ist dabei, daß ich eine Zeichenkette wie +1234+5323 nicht geteilt kriege in 2 einzelne Werte. In diesem Falle wäre es ja noch einfach, aber mein Array-Wert kann folgende Aussehen haben:

+12345-53342
(der erste Wert ist die X-Achse, der zweite wert ist die Y-Achse. Beide können sowohl positiv als auch Negativ sein!)

eine weitere möglichkeit kann noch auftreten:
-12345+23235+435-234
in diesem Falle wird ein Kreis(bogen) gezeichnet. der erste Wert ist wieder x, der zweite y, der dritte gibt den radius an und der vierte wert den Winkel. (alle können sowohl positiv als auch negativ sein!)

Wie gesagt, um die zeichen- bzw Schnittlänge zu berechnen muß ich erstmal die möglichkeit haben, diese Zeichenkette in x=-12345, y=23235, r=435 und w=-234 umzuwandeln.

hier nochmal ein kleiner Teil der zu analysierenden Datei:

+20-47
+39-92
+195-460
+196-460
+4772-11243
+1464+622
+668-271+199-470-
+1315-3096
+474-46+195-461-
+221-422-279-415-
+882-12
+2039-23
+2039-23
+3391-41
+848-8
+848-7
+848-5
+848-2
+848+1
+840+3
+1352+4
+1353+0
+1352-2
+1352+0
+1353+1
+1025+3
+1026+6
 
  • #2
Gibt bestimmt noch nen eleganteren weg, aber auf die Schnelle fällt mir nix ein ;)

Code:
<?php
$array = array(+20-47,
        +1315-3096,
		+1464+622,
		+221-422-279-415-,
		+1353+1,
		+221-422-279-415-,
		+1464+622);

$arr_search = array(@\+@,@-@);
$arr_replace = array(;+, ;-);

for($i = 0; $i < count($array); $i++) {
	# aus + wird ;+ aus - wird ;-
	$array[$i] = preg_replace($arr_search, $arr_replace, $array[$i]);
	# jetzt splitten wir bei ;
	$part = explode(;, $array[$i]);
	# $part[0] ist leer, also weg damit
	array_shift($part);
	# Tjo, und so siehts aus ;-)
	echo <br />Array[$i]<br /><pre>;
	print_r($part);
	echo </pre>;
}
?>

Ich verstehe allerdings nicht was in deinem Beispiel teilweise die - hinten drann sollen ;)
 
  • #3
hmm, vielen dank erstmal! auf diese idee bin ich noch gar nicht gekommen!

das - hinten dran.. nun, ich muß am montag mal in das handbuch schauen, was dieser maschinencode zu bedeuten hat, dann kan nich dir das genau sagen ^^
 
Thema:

Zeichenkette teilen vor + oder -

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben