AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi String-Bearbeiten (Filtern, Löschen, etc.)
Thema durchsuchen
Ansicht
Themen-Optionen

String-Bearbeiten (Filtern, Löschen, etc.)

Ein Thema von PierreB · begonnen am 11. Mär 2006 · letzter Beitrag vom 11. Mär 2006
Antwort Antwort
PierreB
(Gast)

n/a Beiträge
 
#1

String-Bearbeiten (Filtern, Löschen, etc.)

  Alt 11. Mär 2006, 15:06
Moin,

ich steh grad total auf dem Schlauch, vielleicht könnt ihr mir helfen.
Ich habe einen String, der so aufgebaut ist: meintest { test tets; }.
Jetzt möchte ich nur an den Wert vor der {-Klammer kommen, alles was hinter dem ersten Wort ist soll gelöscht werden. Soweit kein Problem, hab ich gut hinbekommen. Wenn jetzt aber zwei {-Klammern nach dem ersten Wort stehen wird eine Klammer nicht gelöscht. Hat jemand ne Idee wieso ? Hier mal mein Code:
Delphi-Quellcode:
var
test : String = 'meintest {{ test tets; }';

procedure TForm2.Button1Click(Sender: TObject);
var
i, x : Integer;
begin
for i := 0 to Length(test) do
if test[i] = '{then x := i;
Delete(test, x, Length(test));
ShowMessage(test);
end;
Als Ergebnis wird mir "meintest {" angezeigt. Wie kann ich das ausbessern ?
Desweiteren würde ich gerne alle Leerzeichen in diesem String löschen, da meine Delphi-Hilfe nicht mehr geht durchforste ich grade das Internet. Danke schonmal,
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#2

Re: String-Bearbeiten (Filtern, Löschen, etc.)

  Alt 11. Mär 2006, 15:17
Schon mal die folgenden Proceduren probiert:
Delphi-Quellcode:
Pos Routine
 
Returns the index value of the first character in a specified substring that occurs in a given string.
 
Unit: System

function Pos(const substr: string, const str: string): Integer;
function Pos(const substr: WideString, const str: WideString): Integer;


Description
In Delphi, Pos searches for a substring, Substr, in a string, S. Substr and S are string-type expressions.
Pos searches for Substr within S and returns an integer value that is the index of the first character of Substr within S. Pos is case-sensitive. If Substr is not found, Pos returns zero.
The PosEx function is similar to Pos, but provides additional features and can be used in C++ code.
Delphi-Quellcode:
Copy(...)
Returns a substring of a string or a segment of a dynamic array.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: String-Bearbeiten (Filtern, Löschen, etc.)

  Alt 11. Mär 2006, 15:57
Moin Pierre.

X ist nicht initialisiert, der Index i muss bei 0 beginnen und x liefert immer das letzte Vorkommen, weil du die Schleife nicht abbrichst.

Einfacher wäre das:

Delphi-Quellcode:
function Before(s, pattern: String): String;
var
  i: Integer;
begin
  i := Pos(pattern, s);
  Delete(s, i, Length(s));
  Result := s;
end;
Grüße vom marabu

Edit: nur Kosmetik
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#4

Re: String-Bearbeiten (Filtern, Löschen, etc.)

  Alt 11. Mär 2006, 16:06
@marabu: Danke genau das hab ich gewollt, vielen Dank.

Das Leerzeichen-Problem hab ich einfach mit s := StringReplace(s, ' ', '', [rfReplaceAll]); gelöst, falls es jemanden interessiert.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: String-Bearbeiten (Filtern, Löschen, etc.)

  Alt 11. Mär 2006, 16:32
Trim() ist auch ganz nett - und entfernt keine inneren Blanks ...

marabu
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#6

Re: String-Bearbeiten (Filtern, Löschen, etc.)

  Alt 11. Mär 2006, 18:00
Hallo, ich hoffe ihr könnt mir nochmal helfen.

Ich probier mich grad an ner Routine, die alle Wörter die nicht zwischen zwei { } - Klammern stehen in Listbox geladen werden sollen. Leider hab ich gar keinen richtigen Ansatzpunkt oder ne Idee. Bis jetzt hab ich das so gemacht, ich prüfe ob eine { vorhanden ist, wenn ja dann merke ich mir dessen "Koordinaten". Dann suche ich nach dem } und lösche dann mittels Delete den Zwischenraum zwischen diesen Klammern. Leider geht das nicht, bei sowas: test {{ test }
foo { foo }}
geht nichts mehr. Es müssen keine Zusammenhänge bestehen, ich möchte einfach nur an die Worte kommen die außerhalb von {}-Klammern stehen. Thx.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: String-Bearbeiten (Filtern, Löschen, etc.)

  Alt 11. Mär 2006, 18:47
Wenn du es selbst schreiben willst, dann gehe durch den Text und erhöhe die Schachtelungsebene um eins, wenn du eine öffnende Klammer findest und verringere um eins für jede schließende Klammer. Den Text auf Ebene 0 zerlegst du dann geeignet in Wörter. Regular Expressions machen das ähnlich.

marabu
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#8

Re: String-Bearbeiten (Filtern, Löschen, etc.)

  Alt 11. Mär 2006, 20:48
Zitat:
dann gehe durch den Text und erhöhe die Schachtelungsebene um eins, wenn du eine öffnende Klammer findest und verringere um eins für jede schließende Klammer.
Ich weiß zwar nicht ob ich verstanden hab wie du das meinst, ich glaube aber schon. Ich werds mal versuchen, danke erstmal.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: String-Bearbeiten (Filtern, Löschen, etc.)

  Alt 11. Mär 2006, 20:53
Wenn du stecken bleiben solltest oder einfach mal vergleichen möchtest ...

marabu
Angehängte Dateien
Dateityp: pas snip.extractwords_132.pas (1,1 KB, 19x aufgerufen)
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#10

Re: String-Bearbeiten (Filtern, Löschen, etc.)

  Alt 11. Mär 2006, 21:12
Ich danke dir, du hast meinen Abend gerettet.

(Ich hatte übrigens auch selbst ne Lösung, diese hatte auch nur noch 2 kleine Schönheitsfehler).
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz