privex007
Goto Top

Entfernen eines Strings vor einem bestimmten Zeichens in einer Textdatei

Hallo an alle Coder,

ich habe Probleme mit dem extrahieren eines String aus einer "txt"-Datei.
Ich habe folgende Zeilen untereinander stehen:


Als Extrahierung möchte ich gerne folgendes in einer separaten "txt"-Datein erhalten:

01722640180d2
0205656292-0001
020853272-001

Also alles was vor dem letzten "|" steht soll weg inklusive dem "|"-Zeichen.

Wie muss ich mein Script ändern?

Ich habe folgendes für das Entfernen einer kompletten Zeile:

Const FOR_READING = 1
Const FOR_WRITING = 2
strFileName = "C:\Dokumente und Einstellungen\user\Eigene Dateien\Downloads\Scripts\Without_String.txt"
strCheckForString = UCase("String")

Set objFS = CreateObject("Scripting.FileSystemObject")
Set objTS = objFS.OpenTextFile(strFileName, FOR_READING)
strContents = objTS.ReadAll
objTS.Close

arrLines = Split(strContents, vbNewLine)
Set objTS = objFS.OpenTextFile(strFileName, FOR_WRITING)

For Each strLine In arrLines
If Not(Left(UCase(LTrim(strLine)),Len(strCheckForString)) = strCheckForString) Then
objTS.WriteLine strLine
End If
Next

Aber ich möchte ja nicht die ganze Zeile löschen, sondern nur einzelne Characters vor einem beliebigem Zeichen.

Geht das?

Danke für eure Hilfe!

Gruß

Privex007

Content-ID: 253893

Url: https://administrator.de/forum/entfernen-eines-strings-vor-einem-bestimmten-zeichens-in-einer-textdatei-253893.html

Ausgedruckt am: 23.04.2025 um 09:04 Uhr

rschwarz
rschwarz 05.11.2014 um 11:44:15 Uhr
Goto Top
Hi!
Wenn Perl auch in Frage kommt, dann geht das (u.a.) so:

#!/usr/bin/perl
use strict();
use warnings();

my $file=$ARGV;
die("Bitte Datei mit angeben\n") if(! $file);
die("Datei $file existiert nicht") if(! -f $file);


while(my $line=<IN>) {
chomp($line);
$line =~ s/.*\|//;
print "Debug: ".$line."\n";
print OUT $line."\n";
}
close(IN);
close(OUT);

VG!
Ralf
colinardo
Lösung colinardo 05.11.2014 aktualisiert um 12:08:33 Uhr
Goto Top
Hallo privex,
kein Problem:
Dim fso,regex,matches,match,objOut
Const FILEIN = "C:\temp\test.txt"  
Const FILEOUT = "C:\temp\test_out.txt"  

Set fso = CreateObject("Scripting.Filesystemobject")  
Set regex = CreateObject("vbscript.regexp")  

'Textdatei einlesen  
strContent = fso.OpenTextFile(FILEIN,1).ReadAll()

'Regex Parameter setzen  
regex.Global = True: regex.IgnoreCase = True: regex.MultiLine = True
regex.Pattern = "\|([^\|]+)$"  

'Regex ausführen  
set matches = regex.Execute(strContent)

If matches.count > 0 Then
	Set objOut = fso.OpenTextFile(FILEOUT,2,True)
	For each match in matches
		objOut.WriteLine match.submatches(0)
	Next
	objOut.Close
End If

MsgBox "Fertig"  
Set fso = Nothing
Set regex = Nothing
Grüße Uwe
Privex007
Privex007 05.11.2014 um 12:08:45 Uhr
Goto Top
Perfekt danke!!!!