String: Unbekanntes Trennzeichen

Hero

Mitglied
Hallo,
ich hab Folgendes Problem:
Ich versuche gerade herzufinden wie man ein Unbekanntes Trennzeichen eines Regulären Ausdruck findet wie es z.B. beim Datum: 03.12.2011 oder: 03/12/2011.

Der Benutzer gibt die Zahlen und das unbekannte Trennzeichen in der grafischen Oberfläche ein als String.
 
Du könntest das Datum mit [c](\d{2}[/.]){2}\d{4}[/c] checken. Dann kannst du dir für die zwei Zeichen eine Group erstellen und diese holen. Da kannst du die legalen Trennzeichen nach belieben erweitern. Wenn alles, ausser Zahlen, erlaubt sein soll, dann geht natürlich auch [c][^\d][/c]. Also so was wie [c]01a02a2011[/c]. Aber ein Problem hast du noch: Du musst im Nachhinein überprüfen, ob die beiden Zeichen die gleichen sind, falls sie dass denn sein müssen. Sonst ging was wie [c]01.02/2011[/c].
 
wenn dein Trennzeichen keine Zahl ist, dann nimm doch
Code:
\D
als Trennzeichen.
 
Danke, dass bringt mich ein Stück weiter aber was ist wenn ich auch Kommazahlen als eine Zahl in einen Regulären Ausdruck benutzen will?
 
es gibt ebenda auch ein test-programm mit dem du das ausprobieren kannst das funktioniert aber m.w. net weil dort irgendein fehler in ist aber du kannst eins zum testen selbst schreiben. viele grüße
 
@emailundlos
Den Link den du gepostet hast hättest du dir vielleicht vor deinem Post mal durchlesen sollen.
Code:
\D
sind natürlich nicht die Digits. Die Zahlen sind in
Code:
\d
definiert,
Code:
\D
sind alle NICHT-Zahlen.

Danke, dass bringt mich ein Stück weiter aber was ist wenn ich auch Kommazahlen als eine Zahl in einen Regulären Ausdruck benutzen will?
Kommazahlen wären sowas wie:
Code:
\d+,\d*
, wobei du dir da überlegen musst ob du führende Nullen haben willst oder nicht. In diesem Beispiel wäre auch 00001,25 eine gültige Eingabe.
 
Zuletzt bearbeitet von einem Moderator:
Code:
\d+,\d*
, wobei du dir da überlegen musst ob du führende Nullen haben willst oder nicht. In diesem Beispiel wäre auch 00001,25 eine gültige Eingabe.

Oder lieber [c]\d+(,\d+)?[/c], ansonsten wär so was wie [c]123,[/c] valid. Und wenn du keine führenden Nullen willst, kannst du [c][1-9]\d*(,\d+)?[/c] verwenden, dann ist aber [c]0[/c] keine gültige Eingabe. Also wärs [c](0|[1-9]\d*)(,\d+)?[/c].
 
Super !
Was mir noch Fehlt ist, wenn man als Regulären Ausdruck "Schiff-fahrt-karte" als ein Wort akzeptiert aber wenn man "Schiff--Fahrt---karte" eingibt sollen die die drei Wörter auch als drei Wörter dann eben anerkannt werden.
Bei mir ist es das Problem, dass wenn dann jedes Wort mit Bindestrich als ein Wort geschrieben wird also
"Schiff-fahrt-karte" zu "Schifffahrtkarte" und "Schiff--fahrt---karte" wird auch zu "Schifffahrtkarte" oder es bleibt wie es ist, was bei "Schiff-fahrt-karte" korrekt wäre aber falsch bei "Schiff--fahrt---karte".
 
Moin,

Ich hab jetzt ein neues Problem, nähmlich:
Der Benutzer gibt eine Rechenoperation ein wie z.B.: 4*5+6*2 und nun sollen Klammern an der richtigen stellen gesetzt werden, quasi Klingt unnötig aber wenn man mehrere solche Rechenoperationen hintereinander hat ist es wesentlich lesbarer

Woher soll das Programm wissen, was die richtige Stelle ist ???:L
Und so unnötig sind die Klammern nun wirkjlich nicht ... es könnte ja auch 4*(5+6)*2 gewünscht sein !

Gruß
Klaus
 
Und woher soll dein Programm wissen, dass der User nicht folgendes meint?
Code:
((4*6)+(6*2))
Das wäre übrigens auch die richtige Rechnung wenn man die Rechenaufgabe ohne Klammern eingibt.
 

Neue Themen


Zurück
Oben