|
You last visited: Today at 20:49
Advertisement
StringBetween --- Problem-Need Help ^^
Discussion on StringBetween --- Problem-Need Help ^^ within the AutoIt forum part of the Coders Den category.
11/14/2010, 20:03
|
#16
|
elite*gold: 0
Join Date: Jul 2008
Posts: 832
Received Thanks: 136
|
Quote:
Originally Posted by Fab1an
So kriegst du deine gewünschten Zeiten
Code:
#include <Array.au3>
$sString = 'rackElement[1] = new product(1, "Getreide", 325,"getreide",2,1200000,"00:20:00 h",1,2,1,0,"v");rackElement[5] = new product(5, "Futterrüben", 360,"futterrueben",3,7200000,"02:00:00 h",1,2,2,0,"v");rackElement[6] = new product(6, "Kräuter", 1080,"kraeuter",4,14400000,"04:00:00 h",1,2,2,0,"v");rackElement[8] = new product(8, "Kornblumen", 160,"kornblume",5,57600000,"16:00:00 h",1,2,2,0,"v");rackElement[9] = new product(9, "Eier", 1330,"eier",1,14400000,"04:00:00 h",1,1,1,0,"e");rackElement[10] = new product(10, "Milch", 1024,"milch",4,43200000,"12:00:00 h",1,1,1,0,"e");rackElement[11] = new product(11, "Wolle", 560,"wolle",5,86400000,"24:00:00 h",1,1,1,0,"e");rackElement[12] = new product(12, "Honig", 320,"honig",10,172800000,"48:00:00 h",1,1,1,0,"e");rackElement[18] = new product(18, "Gurken", 759,"gurke",3,5400000,"01:30:00 h",1,1,1,0,"v");rackElement[20] = new product(20, "Erdbeeren", 41115,"erdbeere",5,28800000,"08:00:00 h",1,1,1,0,"v");rackElement[21] = new product(21, "Tomaten", 80,"tomate",5,36000000,"10:00:00 h",1,1,1,0,"v");rackElement[22] = new product(22, "Zwiebeln", 1200,"zwiebel",4,30000000,"08:20:00 h",1,1,1,0,"v");rackElement[23] = new product(23, "Spinat", 1080,"spinat",4,48000000,"13:20:00 h",1,1,1,0,"v");rackElement[24] = new product(24, "Blumenkohl", 1080,"blumenkohl",4,43200000,"12:00:00 h",1,1,1,0,"v");rackElement[26] = new product(26, "Kartoffeln", 1080,"kartoffel",4,46800000,"13:00:00 h",1,1,1,0,"v");rackElement[27] = new product(27, "Käse", 194,"kaese",15,120000000,"33:20:00 h",1,1,1,0,"e");rackElement[29] = new product(29, "Spargel", 540,"spargel",4,57000000,"15:50:00 h",1,2,1,0,"v");rackElement[31] = new product(31, "Zucchini", 1080,"zucchini",7,60000000,"16:40:00 h",1,1,1,0,"v");rackElement[32] = new product(32, "Heidelbeeren", 12305,"heidelbeere",4,43200000,"12:00:00 h",1,1,1,0,"v");rackElement[91] = new product(91, "Zierfisch", 20,"fisch",4,172800000,"48:00:00 h",1,1,1,0,"e");rackElement[92] = new product(92, "Fischfutter", 9,"fisch",4,10000000,"02:46:40 h",1,1,1,1,"e");'
$aRes = StringRegExp($sString,'new product\((?:[^,]+,){6}"(.+?)&[^\)]+\)',3)
_ArrayDisplay($aRes)
|
Aah, big THX  ist sogar fast das was ich wollte 
Die Auflistung bringt mir nix, ich brauch die Zahlen so zur Hand, dass ich die nach den Kennziffern, wie die da in Klammern sind, rauspicken kann.
Wenn diese Auflistung universell wääre, könnte ich es dann noch schaffen, aber da diese sich von acc zu account unterscheidet wirds so nix
|
|
|
11/14/2010, 20:27
|
#17
|
elite*gold: 0
Join Date: Nov 2010
Posts: 6
Received Thanks: 3
|
Also für Getreide willst du die Zeit mit der Zahl 325 herauspicken oder welche Zahl ist gemeint?
Code:
rackElement[1] = new product(1, "Getreide", 325,"getreide",2,1200000,"00:20:00 h",1,2,1,0,"v")
|
|
|
11/14/2010, 20:52
|
#18
|
elite*gold: 0
Join Date: Jul 2008
Posts: 832
Received Thanks: 136
|
Quote:
Originally Posted by Fab1an
Also für Getreide willst du die Zeit mit der Zahl 325 herauspicken oder welche Zahl ist gemeint?
Code:
rackElement[1] = new product(1, "Getreide", 325,"getreide",2,1200000,"00:20:00 h",1,2,1,0,"v")
|
Nein, jedes Produkt ist nummeriert mit der Zahl in den [] ^^ also Getreide wäre 1, Heidelbeeren 32, Zucchini 31, Kräuter 6, usw. ... Die 325 ist die Anzahl, die man auf Lager hat ^^
Hab es grad geschafft *juhuu*, auch wenn es sicherlich kürzer geht ^^
PHP Code:
Dim $test Dim $test = _StringBetween($sHTML, '= new product('&GUICtrlRead($Input2)&',', '"v")') $time= StringRight($test[0], 20) $time2= StringLeft($time, 8)
MsgBox(0, "test", $time2)
Der fehler im 1ten Versuch war offensichtlich wegen diesem " nbsp ", das immer zwischendurch war. komischerweise wird es da nicht rausgelesen oder gibt fail, weil es schon vorher vorhanden war (tippe eher auf das 1te, da es mit stringright so rauskam  )
Bin für weitere Vorschläge offen ^^
Deins sieht ziemlich kompliziert aus, aber man kann das sicherlich auch so mit den zahlen aufteilen
Mal was ähnliches:
Könntest du mit dieser Formel es so schaffen, dass du diese Produktnummer und den Produktnamen in ein Array packen kannst?
Also damit ich so eine ganze Auflistung habe z.B.
Quote:
1=Getreide
6=Kräuter
...
32=Heidelbeeren
|
|
|
|
11/14/2010, 21:15
|
#19
|
elite*gold: 0
Join Date: Nov 2010
Posts: 6
Received Thanks: 3
|
Aber klar
Die Funktion _RegExp ist aber nicht von mir sondern von SEuBo aus autoit bot.de
Code:
#include <Array.au3>
$sString = 'rackElement[1] = new product(1, "Getreide", 325,"getreide",2,1200000,"00:20:00 h",1,2,1,0,"v");rackElement[5] = new product(5, "Futterrüben", 360,"futterrueben",3,7200000,"02:00:00 h",1,2,2,0,"v");rackElement[6] = new product(6, "Kräuter", 1080,"kraeuter",4,14400000,"04:00:00 h",1,2,2,0,"v");rackElement[8] = new product(8, "Kornblumen", 160,"kornblume",5,57600000,"16:00:00 h",1,2,2,0,"v");rackElement[9] = new product(9, "Eier", 1330,"eier",1,14400000,"04:00:00 h",1,1,1,0,"e");rackElement[10] = new product(10, "Milch", 1024,"milch",4,43200000,"12:00:00 h",1,1,1,0,"e");rackElement[11] = new product(11, "Wolle", 560,"wolle",5,86400000,"24:00:00 h",1,1,1,0,"e");rackElement[12] = new product(12, "Honig", 320,"honig",10,172800000,"48:00:00 h",1,1,1,0,"e");rackElement[18] = new product(18, "Gurken", 759,"gurke",3,5400000,"01:30:00 h",1,1,1,0,"v");rackElement[20] = new product(20, "Erdbeeren", 41115,"erdbeere",5,28800000,"08:00:00 h",1,1,1,0,"v");rackElement[21] = new product(21, "Tomaten", 80,"tomate",5,36000000,"10:00:00 h",1,1,1,0,"v");rackElement[22] = new product(22, "Zwiebeln", 1200,"zwiebel",4,30000000,"08:20:00 h",1,1,1,0,"v");rackElement[23] = new product(23, "Spinat", 1080,"spinat",4,48000000,"13:20:00 h",1,1,1,0,"v");rackElement[24] = new product(24, "Blumenkohl", 1080,"blumenkohl",4,43200000,"12:00:00 h",1,1,1,0,"v");rackElement[26] = new product(26, "Kartoffeln", 1080,"kartoffel",4,46800000,"13:00:00 h",1,1,1,0,"v");rackElement[27] = new product(27, "Käse", 194,"kaese",15,120000000,"33:20:00 h",1,1,1,0,"e");rackElement[29] = new product(29, "Spargel", 540,"spargel",4,57000000,"15:50:00 h",1,2,1,0,"v");rackElement[31] = new product(31, "Zucchini", 1080,"zucchini",7,60000000,"16:40:00 h",1,1,1,0,"v");rackElement[32] = new product(32, "Heidelbeeren", 12305,"heidelbeere",4,43200000,"12:00:00 h",1,1,1,0,"v");rackElement[91] = new product(91, "Zierfisch", 20,"fisch",4,172800000,"48:00:00 h",1,1,1,0,"e");rackElement[92] = new product(92, "Fischfutter", 9,"fisch",4,10000000,"02:46:40 h",1,1,1,1,"e");'
$aRes = _RegExp($sString,'new product\((\d+),\s+?"(.+?)"[^\)]+\)')
_ArrayDisplay($aRes)
;By SEuBo (www.*************)
Func _RegExp($sTest, $sPattern, $iOffset = 0)
Local $aRet, $iUB, $iUB2, $aDummy, $aNewArr
$aRet = StringRegExp($sTest, $sPattern, 4, $iOffset)
If @error Then Return
Local $iUB = UBound($aRet), $iUB2 = UBound($aRet[0]), $aNewArr[$iUB][$iUB2 - 1]
For $i = 0 To $iUB - 1
Local $aDummy = $aRet[$i], $iUBD = UBound($aDummy)
If $iUBD - 1 > $iUB2 Then
$iUB2 = $iUBD
ReDim $aNewArr[$iUB][$iUB2]
EndIf
For $j = 1 To $iUBD - 1
$aNewArr[$i][$j - 1] = $aDummy[$j]
Next
Next
Return SetError(0, $iUB, $aNewArr)
EndFunc ;==>_RegExp
|
|
|
11/14/2010, 22:04
|
#20
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
wenn du von nummer auf string schließen willst, geht das gaze auch besser, indem du jedem string, direkt die zugehörige zahl als index zuweist.
zb so:
Code:
$read = StringRegExp($string, 'new product\((\d+), "(.*?)".*?\)', 3)
Dim $product[$read[UBound($read)-2]+1]
For $i=0 To UBound($read)-2 Step 2
$product[$read[$i]] = $read[$i+1]
Next
wenn du das ganze so gemacht hast, brauchst du nicht immer das gesamte array nochmal durchlaufen, sondern könntest direkt $product[$zahl] aufrufen...
$product[1] würde so zb "Getreide" ausgeben.
musst natürlich wissen was dir wichtiger ist, da du auf diesem weg einen höheren speicherverbrauch hast (ungenutzte array elemente). dafür hast du aber so deutlich schnellere und ressourcenschonende zugriffe, und kannst das ganze leichter aufrufen^^
|
|
|
11/14/2010, 22:28
|
#21
|
elite*gold: 0
Join Date: Jul 2008
Posts: 832
Received Thanks: 136
|
Ah, also hab ich jetzt eine Array, wo der Index gleich der Produktnummer ist  ? Thx, wird sicherlich irgendwo nützlich sein
Worin unterscheidet sich dieses _RegExp und StringRegExp ^^?
|
|
|
Similar Threads
|
[Problem] Problem with server starting - cannot find quest index for PaxHeader
12/22/2009 - Metin2 Private Server - 1 Replies
Hello!
I have this same problem as here when i'm starting my server:
http://www.elitepvpers.com/forum/metin2-pserver-di scussions-questions/307143-metin2-serverfiles-ques t-index-fehler.html
But I didn't know the answer.. how to repair this?
Greetings
|
All times are GMT +1. The time now is 20:49.
|
|