Hallo zusammen,
ich habe mal wieder ein "Suchen-und-Ersetzen" Problem.
In Textdatei mit Zahlen in Spalten soll jede Zahl der 4. und 5. Spalte durch Zahl+2 ersetzt werden.
Problem: Spalten sind nicht duch festen Wert getrennt (z.B. TAB), sondern durch variable Anzahl an Leerzeichen, meist 4 oder 5 (das kommt im Beispiel unten leider nicht rüber).
Was wäre ein sinnvoller Ansatz?
Ich habe 2 Skripte probiert. Bei beiden Skripten verliere ich leider das Zahlenformat (immer 3 Nachkommastellen) und weiß nicht wie ich die neuen Daten zurück in die Textdatei schreiben kann.
1. FileReadLine, dann StringSplit. Im Array kann ich dann Zahlenwerte ersetzen.
2. FileReadToArray: hier lese ich eine Zeile der Textdatei in eine Zeile des Arrays und splitte dann anhand von 4 Leerzeichen auf. Im Array kann ich dann Zahlenwerte ersetzen.
1 101 0.000 0.0380 3.100 2.350 1.500 50.000 1906 --> 1 101 0.000 0.0380 5.1 4.35 1.500 50.000 1906
1 201 0.000 0.0300 3.800 2.050 3.500 50.000 3600
1 301 0.000 0.0180 3.000 0.250 5.500 50.000 3138
1 401 0.710 0.0310 6.700 2.650 8.100 50.000 2766
1 501 0.270 0.0370 9.000 5.500 7.000 50.000 2454
1 601 0.000 0.0280 10.500 8.300 4.400 50.000 2210
1 701 0.000 0.0230 7.400 6.300 2.200 50.000 1991
1 801 0.030 0.0230 8.100 7.450 1.300 50.000 2009
1 901 0.040 0.0210 6.500 5.650 1.700 50.000 2027
11001 0.050 0.0330 9.600 7.350 4.500 50.000 2594
11101 0.000 0.0230 11.200 7.800 6.800 50.000 5048
11201 0.130 0.0540 11.200 7.000 8.400 50.000 3053
11301 0.000 0.0280 8.200 5.700 5.000 50.000 2485
11401 0.090 0.0420 10.800 7.750 6.100 50.000 3842
#include <File.au3>
#include <Array.au3>
$File = @ScriptDir & "\C_01.cli"
$FileOpen = FileOpen($File, 0)
If $FileOpen = -1 Then
MsgBox(0, "", "An error occurred when reading the file.")
EndIf
Local $LineCount = _FileCountLines($File)
MsgBox($MB_SYSTEMMODAL, "", $LineCount)
Local $Line = FileReadLine($FileOpen, 2)
MsgBox(0, "", $Line)
Local $aNumbers = StringSplit($Line, " ", $STR_ENTIRESPLIT)
_ArrayDisplay($aNumbers)
$NewTempMax = $aNumbers[4] + 2
_ArrayDelete($aNumbers, 4)
_ArrayInsert($aNumbers, 4, $NewTempMax)
$NewTempMean = $aNumbers[5] + 2
_ArrayDelete($aNumbers, 5)
_ArrayInsert($aNumbers, 5, $NewTempMean)
_ArrayDisplay($aNumbers)
FileClose($FileOpen)
Alles anzeigen
#include <File.au3>
#include <Array.au3>
$File = @ScriptDir & "\C_01.cli"
Local $aArray
_FileReadToArray($File, $aArray)
_ArrayDisplay($aArray)
Local $aNumberSplit = StringSplit($aArray[2], " ", $STR_ENTIRESPLIT)
_ArrayDisplay($aNumberSplit)
Vielen Dank, stevie