![]() |
AW: Herauslösen eines Strings im string
Wenn wir schon mal beim Diskutieren sind: Viele dieser Stringzerlegungsaufgaben würden vermutlich nicht in der DP landen, wenn die Nutzung von reguläre Ausdrücke in der Delphi-Community verbreiteter wäre :mrgreen:
|
AW: Herauslösen eines Strings im string
dann los... wie können reguläre Ausdrücke bei diesem Problem helfen? Ich dachte immer die wären was fürs Suchen....
|
AW: Herauslösen eines Strings im string
Nun noch vollständigkeits- und spaßeshalber, eine weitere OOP-Möglichkeit:
Delphi-Quellcode:
procedure TForm1.ButtonAddClick(Sender: TObject);
begin with ListBox1 do Items.Add('12345,[WASSER],Wasser ist, wie es ist=Muss geschützt werden, oder?') end; procedure TForm1.ListBox1Click(Sender: TObject); var s, s1, s2, s3, s4: String; sl: TStringList; begin with ListBox1 do if ItemIndex < 0 then Exit; with ListBox1 do s := Items[ItemIndex]; sl := TStringList.Create; try sl.Add(s); s4 := sl.Values[sl.Names[0]]; sl.Delimiter := ','; sl.DelimitedText := sl.Names[0]; //kann man auch CommaText nehmen if sl.Count > 0 then s1 := sl[0] else s1 := ''; if sl.Count > 1 then s2 := sl[1] else s2 := ''; //hier evtl. noch die eckigen Klammern löschen if sl.Count > 2 then s3 := sl[2] else s3 := ''; finally sl.Free; end; ShowMessage( 'Item-String: ' + s + #13#10 + 'ID: ' + s1 + #13#10 + 'HEADLINE: ' + s2 + #13#10 + 'TEXT1: ' + s3 + #13#10 + 'TEXT2: ' + s4 ); end; |
AW: Herauslösen eines Strings im string
Zitat:
Das Geheimnis sind Capturing-Groups, wie sie von vielen Implementierungen angeboten werden. Ausgehend von den Beispielen:
Code:
Komm ich zu diesem Ausdruck:
99,10,Text1=Text2
99,Text1=Text2
Code:
Die Capturing-Groups sind:
([0-9]+),(?:([^,]*),)?([^=]*)=(.*)
Code:
import java.util.regex.*;
class PatternTest { static public void main(String[] args) { if (args.length == 1) { Pattern pattern = Pattern.compile("([0-9]+),(?:([^,]*),)?([^=]*)=(.*)"); Matcher matcher = pattern.matcher(args[0]); if (matcher.matches()) { // group 0 is the whole match for (int i = 1; i <= matcher.groupCount(); i++) { System.out.println(matcher.group(i)); } } else { System.out.println("No match!"); } } else { System.out.println("Nothing to match!"); } } } Gut, ich gebe zu: Das hat jetzt etwas länger gedauert als es sollte. Ich musste nochmal die nötigen Klassen und die Regex-Syntax nachgooglen :stupid: |
AW: Herauslösen eines Strings im string
Danke!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz