Bestimmte Zeichen aus einem String entfernen

Ich möchte bestimmte Zeichen aus einem String entfernen.
Z.b. enthält das Feld sStringBeispiel den Wert:

„beispiel.exe“

Zu entfernen wären die " , sodass ich danach folgenden Inhalt vorfinde:

beispiel.exe

Viele Wege führen zum Ziel. Für dieses Beispiel würde ich Dir die Funktion strtok ans Herz legen, die Tokens aus einem String separiert. Siehe Doku.

Gruß

J.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Vielen Dank José

Ich hab’s so ausprobiert:

// Im Feld Edit1->Text steht: „Test.exe“

char input[256];
char *p;
strcpy(input,Edit1->Text.c_str());
p = strtok(input, „“"");
if § Edit2->Text = p;
p = strtok(NULL, „“"");

Die Angabe „“"" anstelle „“" war notwendig. Bei „“" meckert der Compiler.

Als Ergebnis erhalte ich weiterhin: „Test.exe“

Spiele ich das ganze mit ’ durch, dann funktioniert’s:

// Im Feld Edit1->Text steht: ‚Test.exe‘

char input[256];
char *p;
strcpy(input,Edit1->Text.c_str());
p = strtok(input, „’“);
if § Edit2->Text = p;
p = strtok(NULL, „’“);

Als Ergebnis erhalte ich dann: Test.exe

Mit " funktioniert’s also nicht nicht.

Hast du vielleicht noch eine Idee?

Gruss

SOI

Viele Wege führen zum Ziel. Für dieses Beispiel würde ich Dir
die Funktion strtok ans Herz legen, die Tokens aus einem
String separiert. Siehe Doku.

Gruß

J.

Ich hab’s so ausprobiert:

// Im Feld Edit1->Text steht: „Test.exe“

char input[256];
char *p;
strcpy(input,Edit1->Text.c_str());
p = strtok(input, „“"");
if § Edit2->Text = p;
p = strtok(NULL, „“"");

Die Angabe „“"" anstelle „“" war notwendig. Bei „“" meckert
der Compiler.

Hallo SOI,

seltsam, daß Dein Compiler bei „“"" nicht gemeckert hat…
Jedenfalls sollte das eigentlich „“" heißen.

Gruß,
Lydia

… oder die Variante der Windows-Freaks:

CString str = „„beispiel.exe““;

str.TrimLeft(""");
str.TrimRight(""");

Fertig.

cu
Steffen

[…]

Die Angabe „“"" anstelle „“" war notwendig. Bei „“" meckert
der Compiler.

seltsam, daß Dein Compiler bei „“"" nicht gemeckert hat…

Seltsam ist das keinesfalls. Das steht sogar im ANSI-standard so drin.

Allerdings wirst du mit dem Konstrukt nicht das (oben) gewünschte Ergebnis erhalten.

In C ist es möglich einen (konstanten!) String in mehrere „Einzelteile“ zu zerlegen. Zwischen diesen „Einzelteilen“ dürfen beliebige Leerstellen (Leerzeichen, Tabulatoren, Zeilenschaltungen,…) sein. So kann man z.B. eine String

"Franz jagt im komplett verwahrlosten Taxi quer durch Bayern"

im Quelltext ganz einfach auch so schreiben:

"Franz jagt " "im komplett verwahrlosten Taxi "
"quer durch Bayer"

schreiben. Das Resultat bleibt das gleiche. Ich bin mir jetzt nicht sicher ob es schon der Präprzessor oder erst der Compiler mach, auf jeden Fall stehen diese „Einzelteile“ im fertigen Programm als ein kompletter String.

Auf das obige Problem bezogen bedeutet dies, das vier (oder eine beliebige andere gerade Anzahl) von Anführungszeichen immer ein Leerstring bedeutet. (nicht wie in VB, wo zwei aufeinanderfolgende Anführungzeichen innerhalb einer Zeichenkette in der Ausgabe zu einem einzigen zusammengefasst werden.)

Der Compiler (oder Präpo) sieht die ersten beiden Zeichen
„“ und die zweiten „“ als jeweils ein „Token“ an. Diese Token stllen in dieser Form Leerstrings dar. Zwei aneinandergehängt Leerstring ergeben wiederrum ein Leerstring.

Jedenfalls sollte das eigentlich „“" heißen.

genau so ist es !!

Ich hoffe das die Ausführungen jetzt nicht zu lang waren und etwas geholfen haben…

Gruss Jens

1 Like

wieder was gelernt ;o) (o.Text)
.