AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Strip?

Ein Thema von Pseudemys Nelsoni · begonnen am 28. Aug 2006 · letzter Beitrag vom 28. Aug 2006
Antwort Antwort
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Strip?

  Alt 28. Aug 2006, 11:16
Tja, leider nicht das an was ihr gedacht habt ...

Folgendes: Ich möchte aaus einem String bestimmte Zeichen löschen. Mal als Beispiel:

Zitat:
Blah$03,01blubb
Also ich möchte immer dieses vorkommen entfernen: $<[n]n>[,<[n]n>

D.h all sollche Sachen wie:
$1
$15
$1,1
$15,15

möchte ich aus meinem String raushaben. Habt ihr da ne Idee? Gibt es dafür nen Regex?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Strip?

  Alt 28. Aug 2006, 11:25
Wenn hinter der Zahl zwangsläufig eine nicht-Zahl folgt, kannst du ja einfach soweit löschen.
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#3

Re: Strip?

  Alt 28. Aug 2006, 11:36
Zitat von Pseudemys Nelsoni:
Gibt es dafür nen Regex?
Natürlich .
Code:
\$\d+(,\d+)?
@inherited: Und wenn ein weiteres Komma vorkommt, der String auch am Ende liegen kann uswusf. ? Da vertrau ich lieber auf die Unkompliziertheit meiner Regechsen .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#4

Re: Strip?

  Alt 28. Aug 2006, 11:43
@Inherited, so wollte ich es ja nicht *g*. da hab ich dann nachher 20 ifs usw

Khabarakh, danke für Deinen Code . Kannst Du ihn mir evtl noch verbessern? Hab ka von den Regexen *g.

Es geht nicht um das Zeichen "$", sondern ein Steuerzeichen (Char 3).

ALso entfernt werden muss:

Das Zeichen, dass dem Char "2" entspricht.
Das zeichen, dass dem Char "31" entspricht.
Das Zeichen, dass dem Char "3" entspricht. Dieser hat wie oben gezeigt evtl Parameter, d.h []nn,nn im längsten fall ([] soll hier das Steuerzeichen 3 darstellen).

Es geht darum über IRC empfangene Messages von Fett/Unterstrich/Farbe zu befreien.
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#5

Re: Strip?

  Alt 28. Aug 2006, 11:57
Auch in Regular Expressions gibt es glücklicherweise ASCII-Escape-Sequenzen:
Zitat von SDK - Escape Sequences:
\x20
Matches an ASCII character using hexadecimal representation (exactly two digits).
Code:
\x03\d+(,\d+)?
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#6

Re: Strip?

  Alt 28. Aug 2006, 12:01
Ah, much thx .

Wie komme ich danach an das Ergebnis? Ich habe bis jetzt nur per "IsMatch()" geprüft ob ein string einer Maske entspricht..aber noch nie ein Resultat ausgeben lassen. Mit Matches() evtl?
Wie sagt ich in einem Regex, dass ich durchgehend ein Zeichen entfern haben möchte? also die [] beziehen sich ja immer nur auf ein Zeichen, nicht auf dne ganzen String oder?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#7

Re: Strip?

  Alt 28. Aug 2006, 12:10
Zitat von Pseudemys Nelsoni:
Ah, much thx .

Wie komme ich danach an das Ergebnis? Ich habe bis jetzt nur per "IsMatch()" geprüft ob ein string einer Maske entspricht..aber noch nie ein Resultat ausgeben lassen. Mit Matches() evtl?
Match() liefert dir das erste Ergebnis, Matches() alle.
Zitat:
Wie sagt ich in einem Regex, dass ich durchgehend ein Zeichen entfern haben möchte?
Erst einmal kannst du mit einem Regex nur suchen . Für alles andere braucht es Hilfsfunktionen wie Regex.Replace(). Bei einem einzigen Zeichen wäre aber genausogut String.Replace() möglich.
Zitat:
also die [] beziehen sich ja immer nur auf ein Zeichen, nicht auf dne ganzen String oder?
Hm? Bitte nochmal formulieren .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#8

Re: Strip?

  Alt 28. Aug 2006, 12:25
Ich habe es nun so:

Code:
internal string Strip(string str)
{
    Regex regex = new Regex(@"\x03\d+(,\d+)?");

    return regex.Match(str).Value;
}
Code:
string test = (char)3 + "15,15blubb";
Console.WriteLine(irc.Strip(test));
Console.ReadLine();
Nun bekomme ich aber genau das wieder, was ich eigentlich gelöscht haben wollte Also [3]15,15 und das "blubb" ist weg (das was ich ja eigentlich haben möchte*g).

Zitat:
Hm? Bitte nochmal formulieren
Ich meinte, das sich in nem Regex die [] "teile"(*g*) nur auf ein Zeichen bezieht und nicht auf den kompletten String.
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#9

Re: Strip?

  Alt 28. Aug 2006, 12:37
Ich hab doch gesagt, dass Regexes nur zum Suchen da sind . Aber Gefundenes lässt sich natürlich auch entfernen, z.B. eben durch genanntes Regex.Replace().

Zitat:
Ich meinte, das sich in nem Regex die [] "teile"(*g*) nur auf ein Zeichen bezieht und nicht auf den kompletten String.
Bitte welche Teile ? Character Sets (die durch eckige Klammern gekennzeichnet werden) habe ich im ganzen Thread noch nicht benutzt. Du hast [] als Platzhalter für Sonderzeichen eingeführt und nunja... ein Char wird sich wohl immer auf einen Char und nicht auf einen String beziehen .
Sebastian
Moderator in der EE
  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 08:52 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