Klammern prüfen

  • Ich hab folgendes Problem in C#:
    Ich will einen String zeichenweise durchlaufen. Kein Problem. Wenn eine schließende Klammer auftritt soll irgendwas passieren. Leider interpretiert mir der Editor meine Abfrage nach ")" jedes mal als tatsächliche Klammer im Code.

    Code
    if (s[i] == ')')
    then...

    Die Klammer zwischen den Apostrophen wird als schließende Klammer zu der öffnenden vor dem s gewertet und die dahinter gekonnt ignoriert. Ich habs auch mit Anführungszeichen anstatt der Apostrophe probiert -> kein Erfolg. :confused: Wie muss der Code dafür genau aussehen? Wie kann ich nach einem Apostroph bzw. nach einem Anführugnszeichen suchen? So viele Fragen...

    Lösung erwünscht, wenn irgendwer was weiß!! Thx im voraus!

    Ohne Musik wäre das Leben ein Irrtum!

  • Zitat von Poppe

    Leider interpretiert mir der Editor meine Abfrage nach ")" jedes mal als tatsächliche Klammer im Code.

    Hmmm. Für mich völlig unverständlich. Ich kenne C# zwar nicht so gut, aber es ist wie JAVA auch ein C derivat. In so fern sollte ')' genau den Character ) ergeben. Eventuell ist s nicht überladen und Du brauchst etwas in der Art von s.charAt(i)?

    Probier mal

    Code
    if(c == ')')

    bei einem normalen character aus.

    Ach ja, könntest Du mehr von dem Programm posten und die ganz genaue Fehlermeldung? Und von welchem Editor redest Du? Oder meinst Du doch den Compiler?

    Du könntest eventuell auch '\)' probieren -- sollte aber keinen Unterschied machen.

  • Normalerweise müsste dein Code funktionieren (habs extra nochmals probiert, bei mir hat´s funktioniert). Vieleicht hast du irgendwo anders eine Klammer falsch gesetzt. Was bringt der Compiler? Wie sieht der Rest vom Code aus?

  • naja also: eigentlich hab nicht ICH das problem, sondern ein freund von mir sucht rat. der editor heißt soweit ich weiß "crimson - editor" und das programm lässt sich nicht compilieren.
    ich poste nen screenshot sobald ich den erhalte.

    s[i] ist das äquivalent zu s.charAt(i) in java (ja so einfach und so kurz..und recht praktisch möcht ich dazusagen)

    ob ich jedes zeichen als character speichere und dann prüfe ob es eine klammer ist, ist egal. immer dasselbe. wie gesagt: screenshot mit fehlermeldung und allem was man sich wünscht wird nachgeliefert!

    Ohne Musik wäre das Leben ein Irrtum!

  • Code
    string blow = "job ( i am  so fucking horny ) biat)ch";
    		for(int i =0; i < blow.Length;i++)
    		{
    			if(blow[i].Equals(')'))
    			{
    				Console.WriteLine("F");
    			}
    		}
    		Console.ReadLine();

    also das geht bei mir

  • Zitat von Poppe

    Leider interpretiert mir der Editor meine Abfrage nach ")" jedes mal als tatsächliche Klammer im Code.

    Code
    if (s[i] == ')')
    then...


    Dein Editor ääh der Editor deines Freundes (ist ja wie bei Bravo Leserbriefen...) ist Schrott. Der Code ist selbstverständlich syntaktisch ok.

    Achtung: Ich kenne die Semantik von C# nicht, aber == vergleicht z.b. bei Strings in Java die Referenzen und nicht die Werte. Du mußt herausfinden, ob das bei type(s[i]) auch der Fall ist.

    Dipper dipper dii dipper dii dipper dii duuu

  • Zitat von sauzachn

    Dein Editor ääh der Editor deines Freundes (ist ja wie bei Bravo Leserbriefen...) ist Schrott. Der Code ist selbstverständlich syntaktisch ok.

    Ich kenne den editor zwar nicht, aber ich glaube nicht dass das der fehler ist.
    Ich tippe eher auf das 'Stille Post' Problem: Freund von Poppe erklärt sein Problem Poppe, Poppe erklärt es uns. Und weil weder Poppe noch wir den Code gesehen und ausprobiert haben, bleiben nur wage vermutungen. Und jetzt schauen wir alle auf eine Klammer, die vielleicht gar nicht mal das problem ist.
    Besser wäre es gewesen ein Stück Code zu verschicken (z.b. wie bei das von bosie), dass man einfach in einen editor kopieren und ausführen kann. Wenn das dann bei uns funktioniert und aber bei ihm nicht, kann man sich ja immer noch die umgebung (editor,encoding,platform etc.) anschauen.

    Zitat von sauzachn


    Achtung: Ich kenne die Semantik von C# nicht, aber == vergleicht z.b. bei Strings in Java die Referenzen und nicht die Werte. Du mußt herausfinden, ob das bei type(s[i]) auch der Fall ist.

    der == operator ist in C# ok, wenn du Strings vergleichen möchtest (überladen). Ausserdem würde der code obemn auch in Java funktionieren, weil in dem Beispiel keine Strings, sondern Character vergleichen werden. ;)

  • naja das sieht ja mal ganz gut aus...
    leider mit verspätung - meine schuld wars nicht :engel: - aber nun doch der screenshot des codes. man sieht in der markierten zeile ganz genau das problem: die unterstrichenen klammern werden als zusammengehörendes klammernpaar gewertet -> nix gut!

    mit "equals" hats übrigens genausowenig funktioniert, weils ja nicht am befehl liegt, sondern an der syntax!

    Wenn der Crimson Editor Schrott ist wie sauzachn behauptet - ich hab da keine meinung dazu - was wär denn dann ein komfortabler und net schlechter C# editor?

    Ohne Musik wäre das Leben ein Irrtum!

  • tja laut deinem code würd i mal genauer hinsehen und hoffentlich bemerken ;) , daß da eine abschließende klammer zu wenig ist. scho allein wegen dieser zeile mit vielen klammern usw. usf. sollte man mal die syntax überprüfen und wenn er meint, daß eine klammer fehlt oder so, dann die anzahl der öffnenden und schließenden klammern überprüfen :D

    lg

  • guter opensource editor (ziemlich mächtig) wär natürlich auhc der sharpdevelop

    -------------------
    “If you hear hoof beats, you should look for horses, not zebras.”
    --
    "You, Sir, are an Idiot!" - George Hamilton

  • tja hätt ich gewusst, dass c# auch mit eprog-standart-emacs läuft, hätt ich mir den thread sparen können.

    später is ma halt imma gscheiter! jednfalls danke für alle hilfen - problem solved!:verycool:

    Ohne Musik wäre das Leben ein Irrtum!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!