ChristinaB Geschrieben 21. April 2010 Geschrieben 21. April 2010 Hallo Leute, kann mir vielleicht einer Helfen, da ich gerade dermaßen auf dem Schlauch stehe=). Ich möchte von einer Zahl die z.b. 001234 heißt die vorderen 0 abschneiden. Sprich mein Code sollte von links an losgehen und die nullen wegschneiden. Am ende sollte meine zahl dann 1234 lauten Aber er soll nicht die null in einer Zahl abschneiden also dass ich irgendwie replace mach sondern wirklich nur von vorne bis zur ersten zahl(außer 0) abschneiden. Danke Bsp.: 013098 =13098 003490 =3490 Zitieren
Klotzkopp Geschrieben 21. April 2010 Geschrieben 21. April 2010 Ein Ansatz wäre, das erste Zeichen zu suchen, das keine Null ist, und den Substring ab dieser Position zu nehmen. Zitieren
ChristinaB Geschrieben 21. April 2010 Autor Geschrieben 21. April 2010 (bearbeitet) =) danke Okay ich komm trotzdem nciht auf den trichter=) ich kann ja mit instr nicht ungleich null suchen oder geht das? weil Pos = instr(1,meinString,<>0) geht ja nich... Sorry kopf ist grad total platt... Mir würde jetzt nur noch eine schleife einfallen die ich durchlaufen lass jedes einzelne zeichen anschau wenn ein zeichen ungleich 0 ist mir die zahl der durchläufe merken und ab da dann abschneiden? Bearbeitet 21. April 2010 von ChristinaB Zitieren
Guybrush Threepwood Geschrieben 21. April 2010 Geschrieben 21. April 2010 string t = "001230225000"; Console.Write(t.TrimStart('0'));[/PHP] Zitieren
lbm1305 Geschrieben 21. April 2010 Geschrieben 21. April 2010 (bearbeitet) Den String in eine Zahl (Integer) konvertieren. Damit sind die führenden "0" weg. int a = Convert.ToInt32("001234"); // a = 1234; Bearbeitet 21. April 2010 von lbm1305 Zitieren
lilith2k3 Geschrieben 21. April 2010 Geschrieben 21. April 2010 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; namespace Regularexpressions { class Program { static void Main(string[] args) { string Beispielstring = "001234567"; Regex Expression = new Regex("[0]+([0-9]+)"); System.Console.WriteLine(Expression.Match(Beispielstring).Groups[1].Value); System.Console.ReadKey(); } } } Zur Erklärung: [0]+ bildet eine Klasse aller Nullen, die mindestens einmal oder aber auch mehrfach vornewegstehen (0, 00, 000 usw.) () die Klammern gruppieren einen Ausdruck, der uns im Weiteren interessiert. [0-9]+ ist die Klasse aller Ziffern, die folgen. Expression.Match() wendet die Expression an. Groups enthält die Gruppe der Ausdrücke, die wir oben eingeklammert haben (Groups[1] eben den ersten und Groups[n] eben alle weiteren) Groups[n].value gibt Dir den geklammerten Ausdruck zurück; also hier: alle Ziffern nach den Nullen, die vornewegstehen. myCSharp.de - DIE C# und .NET Community | Artikel | [Artikel] Regex-Tutorial Zitieren
lbm1305 Geschrieben 21. April 2010 Geschrieben 21. April 2010 Wie kompliziert soll es denn noch werden, wenn eine Zeile reicht? Regex soll langsam sein. :roll: Zitieren
lilith2k3 Geschrieben 21. April 2010 Geschrieben 21. April 2010 Wie kompliziert soll es denn noch werden, wenn eine Zeile reicht? Regex soll langsam sein. a) Regexes sind nicht kompliziert und universell einsetzbar und langsam sind sie in der Regel auch nicht. Zitieren
lbm1305 Geschrieben 21. April 2010 Geschrieben 21. April 2010 a) Regexes sind nicht kompliziert und universell Für jemanden der sich damit auskennt nicht. Ich würde aber gern von einem Anfänger / Fotgeschrittenen wissen, was der folgende String überprüft, wenn man ihn an eine Regular Expression übergibt: \w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* Zitieren
flashpixx Geschrieben 21. April 2010 Geschrieben 21. April 2010 \w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* soll wohl ein Überprüfung einer EMailadresse sein: \w ist ein beliebiger Buchstabe oder Zahl oder Unterstrich danach folgt dann im Grunde eine beliebig lange Zeichenkette die aber noch einen Punkt enthalten darf, dann das @ Zeichen nun die Domain, bei hier mindestens auch wieder ein Zeichen folgen muss (ich meine mich aber zu erinnern, dass Domains mind 3 Zeichen enthalten müssen und nicht mit einer Zahl beginnen dürfen, somit wäre die reg Expr hier etwas unpräzise), danach folgt der Punkt (Trennung zur TLD) und danach die TLD, wobei aber auch hier wieder nur ein Buchstabe möglich wäre, denn ebenso wie bei der Domain liefer ()* auch Kleene-Stern genannt die Menge inkl der leeren Menge Zitieren
LadyPreis Geschrieben 22. April 2010 Geschrieben 22. April 2010 @ flash: ist dir abends langweilig? Generell stimme ich aber lbm zu, dass für so einen geringfügigen Anwendungsfall ein Regex den Quellcode einfach nur schwerer lesbar macht... vor allem für Leute, die nicht die JavaDoc als Gute-Nacht-Lektüre haben *zu flash rüberschau* Würde es also so wie von lbm oder unserem piraten vorgeschlagen machen Zitieren
flashpixx Geschrieben 22. April 2010 Geschrieben 22. April 2010 @ flash: ist dir abends langweilig? Ich fand den Ausdruck sehr einfach, drauf gucken und man sieht das doch...... Das @ war sehr verdächtigt und im Grunde steht da doch Zeichen()* @ Zeichen()* . Zeichen()*. Mein Ansatz war erst mal alles wo ein Keeme Stern drin ist zu ignorieren, naja und dann ist es eigentlich klar. Wenn man regelmäßig mit reg Expr arbeitet oder in solchen Veranstaltungen wie theoretische Informatik oder Compilerbau sitzt, dann ist das Alltag. Zitieren
lilith2k3 Geschrieben 22. April 2010 Geschrieben 22. April 2010 (bearbeitet) Mal abgesehen davon, daß es durchaus komplexe RegExes gibt, glaube ich nicht, daß mein Beispiel unverständlich ist; vorallem habe ich es imho gut erklärt, so daß selbst jemand, der von regulären Ausdrücken noch nie etwas gehört hat, trotzdem mit meiner Erläuterung etwas anfangen kann. Und wenn alles nix hilft, kann man sich auch selbst ne Schleife bauen, die alle führenden Nullen ignoriert, und den Rest in einen Ergebnis-String kopiert - fertig. Wofür ist man denn Programmierer? Bearbeitet 22. April 2010 von lilith2k3 Zitieren
ChristinaB Geschrieben 22. April 2010 Autor Geschrieben 22. April 2010 Also ich hab nun so geregelt einfach in ein integer umgewandelt und dann sind meine Nullen weg=) Profil = 001234 Profil = CInt(Profil) und schon Fertig;) Hab ja gesagt ich stand total aufm schlauch=) Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.