TheWorldDrown Geschrieben 29. Februar 2020 Geschrieben 29. Februar 2020 string.ToCharArray() oder var letter = string[i] gibt mir jeweils den ASCII Code und den Character zurück z.B. für den Buchstaben "a" => 97'a' Soll das so sein? Ich möchte nur den Buchstaben, ohne ASCII Index. Zitieren
0 Whiz-zarD Geschrieben 29. Februar 2020 Geschrieben 29. Februar 2020 (bearbeitet) In der Informatik gibt es nur Zahlen. Ein char ist ebenfalls nichts weiter als eine Zahl. Die Zahl kann ein oder zwei Bytes groß sein. Jede Zahl repräsentiert ein Zeichen. Deswegen gibt es ja die ASCII-Tabelle. Die ASCII-Tabelle ist beispielsweise in der GPU implementiert. Somit weiß die GPU, wenn sie sich im Text-Modus befindet, wie ein Zeichen aussehen soll. Du kannst ja folgenden Code ausprobieren: Console.WriteLine((char)97); // gibt 'a' aus Console.WriteLine((int)'a'); // gibt 97 aus Console.WriteLine((char)('a' + 3)); // gibt 'd' aus 'a' ist einfach der Wert 97. Bearbeitet 29. Februar 2020 von Whiz-zarD Zitieren
0 TheWorldDrown Geschrieben 1. März 2020 Autor Geschrieben 1. März 2020 (bearbeitet) Es geht mir um die Darstellung der Werte. z.B. würde ich die Anzahl von Vokalen in einem Text zählen wollen: Variante1: int vowelCount = 0; List<string> vowelList = new List<string>(); vowelList = "a,e,i,o,u".Split(",").ToList(); foreach(var element in vowelList){ for(int i =0; i < str.Length-1;i++) { var letter = str[i]; if (element.Equals(letter)) { vowelCount++; } } } variante2: hier ändere ich nur die for schleife foreach(var element in vowelList){ for(int i =0; i < str.Length-1;i++) { string letter = ""; letter += str[i]; if (element.Equals(letter)) { vowelCount++; } } return vowelCount; In Variante 1 vergleicht er in der if anweisung a mit 91'a' und erhält false zurück. In Variante 2 vergleicht er in der if anweisung a mit a und erhählt true zurück. Verstehe ich nicht ganz, wieso. Kann ich string und char in C# nicht mit .Equals vergleichen? Bearbeitet 1. März 2020 von TheWorldDrown Zitieren
0 Whiz-zarD Geschrieben 1. März 2020 Geschrieben 1. März 2020 (bearbeitet) In der ersten Variante vergleichst du ein String mit einem Char. Die Datentypen sind schon verschieden. Der Vergleich kann also nie funktionieren. Ein char ist nur ein Zeichen, während ein String aus mehreren Zeichen besteht. Ein String ist zudem auch ein Referenztyp (class) und Char ein Wertetyp (struct). vowelList ist eine Liste von Strings und mit str/[i/] holst du ein Char. Du musst also vowelList ist eine Liste oder in ein Array von Chars ändern. var vowelList = new[] { 'a', 'e', 'i', 'o', 'u' }; Bearbeitet 1. März 2020 von Whiz-zarD TheWorldDrown reagierte darauf 1 Zitieren
0 KeeperOfCoffee Geschrieben 1. März 2020 Geschrieben 1. März 2020 (bearbeitet) Was ist str? Das ist in dem Code gar nicht deklariert. Desweiteren hättest du es schon bei der Beschreibung von Equals sehen müssen. auch der "==" Operator hätte dir gesagt, dass ein Vergleich von string und char nicht möglich sei, da du zwei total unterschiedliche Typen von Objekte vergleichst (Equals vergleicht Werte während == auch die Objekt Referenz prüft). Übrigens. Warum instanziierst du nicht gleich die Liste vowelList bei ihrer Deklaration? Arbeitest du mit ner IDE oder mit nem Editor? Du könntest das Problem ziemlich simpel umgehen, wenn du die .Contains() Methode nutzt...vorausgesetzt, dass "element" auch nur ein Buchstabe ist. Ansonsten müsstest du letter mit .ToString() in einen String Wert wandeln. vor 27 Minuten schrieb Whiz-zarD: ein String aus mehreren Zeichen besteht hm? Damit textest du ihm/ihr aber jetzt was falsches ein. Ein String ist kann beliebig viele Zeichen sein. Es ist eine Auflistung von char Objekten...diese kann auch nur ein Objekt haben oder gar leer sein. Bearbeitet 1. März 2020 von KeeperOfCoffee Zitieren
0 Whiz-zarD Geschrieben 1. März 2020 Geschrieben 1. März 2020 Motzen wegen des motzens Willen, oder was? vor 34 Minuten schrieb KeeperOfCoffee: Was ist str? Das ist in dem Code gar nicht deklariert. Aus dem Kontext kann man doch erkennen, dass es sich um ein String handelt... vor 35 Minuten schrieb KeeperOfCoffee: hm? Damit textest du ihm/ihr aber jetzt was falsches ein. Ein String ist kann beliebig viele Zeichen sein. Es ist eine Auflistung von char Objekten...diese kann auch nur ein Objekt haben oder gar leer sein. Und wo liegt nun der Unterschied zwischen vor 57 Minuten schrieb Whiz-zarD: während ein String aus mehreren Zeichen besteht. und vor 35 Minuten schrieb KeeperOfCoffee: Ein String ist kann beliebig viele Zeichen sein. ? Erkläre mir das mal. Zumal ein String eben nicht beliebig viele Zeichen haben kann, da ein String auf 2 GB beschränkt ist... Zitieren
0 KeeperOfCoffee Geschrieben 1. März 2020 Geschrieben 1. März 2020 vor einer Stunde schrieb Whiz-zarD: Ein char ist nur ein Zeichen, während ein String aus mehreren Zeichen besteht Wenn wir davon ausgehen, dass es ein Anfänger ist, kann man dies sehr leicht als Implizierung sehen. vor 14 Minuten schrieb Whiz-zarD: Motzen wegen des motzens Willen, oder was? Ja ich bin hier im Forum ein total typiscer User der jeden anpöbelt und rummotzt. vor 13 Minuten schrieb Whiz-zarD: Aus dem Kontext kann man doch erkennen, dass es sich um ein String handelt... Nein tut es nicht, da sein Code sonst funktionieren würde. vor 9 Minuten schrieb Whiz-zarD: Erkläre mir das mal. Zumal ein String eben nicht beliebig viele Zeichen haben kann, da ein String auf 2 GB beschränkt ist... Ist schon klar, dafür haben wir ja auch maxLength. Wenn du aber einen 2GB String hast machst du wohl schon von vornherein was falsch. In der Praxis wäre das schon ein no go. TheWorldDrown reagierte darauf 1 Zitieren
0 Whiz-zarD Geschrieben 1. März 2020 Geschrieben 1. März 2020 vor 2 Minuten schrieb KeeperOfCoffee: Ja ich bin hier im Forum ein total typiscer User der jeden anpöbelt und rummotzt. Ja, so kommt es mir gerade vor. vor 3 Minuten schrieb KeeperOfCoffee: Nein tut es nicht, da sein Code sonst funktionieren würde. Da die letzte Zeile ein return ist, muss es sich hier um den Inhalt einer Methode handeln und str wird in die Methode reingereicht und da er die Vokale in einem String zählen möchte, handelt es sich kontextmäßig bei str im einen String, der in eine Methode reingereicht wird... Also doch! Kontextmäßig wäre dies zu erkennen. Einzig hätte man ihn darauf hinweisen sollen, dass am lieber die gesamte Methode zeigen sollte aber jeder, der mal 5 Sekunden darüber nachdenkt, hätte es begriffen... vor 5 Minuten schrieb KeeperOfCoffee: Ist schon klar, dafür haben wir ja auch maxLength. Wenn du aber einen 2GB String hast machst du wohl schon von vornherein was falsch. In der Praxis wäre das schon ein no go. Wenn du hier schon die "Er ist doch ein Anfänger"-Keule rausholst, wäre es eben falsch zu sagen, dass ein String beliebig groß sein kann, denn das stimmt einfach nicht. Und String hat keine maxLength-Property. Erzähle doch nicht so einen Quatsch! Zitieren
0 KeeperOfCoffee Geschrieben 1. März 2020 Geschrieben 1. März 2020 Ok bei meinem Test heute morgen habe ich für str eine List hergenommen. War etwas genervt das der Code nicht vollständig war. vor 59 Minuten schrieb Whiz-zarD: Ja, so kommt es mir gerade vor. Tut mir sehr Leid. Ich möchte eigentlich nur diskutieren und bin nicht daran interessiert jemanden anzugreifen. Wenn das so rüberkommt, dann sind Diskussionen nicht möglich. Ich werde mich dann zukünftig raushalten. vor einer Stunde schrieb Whiz-zarD: Wenn du hier schon die "Er ist doch ein Anfänger"-Keule rausholst, wäre es eben falsch zu sagen, dass ein String beliebig groß sein kann, denn das stimmt einfach nicht. Ja stimmt, wenn ich davon ausgehe muss ichs auch von mir erwarten. vor einer Stunde schrieb Whiz-zarD: . Erzähle doch nicht so einen Quatsch! Stimmt mein Fehler. Bin ned mehr am PC und war zu faul nachzusehen. War überzeugt, dass es da irgendwas gibt. NowAzubi reagierte darauf 1 Zitieren
Frage
TheWorldDrown
gibt mir jeweils den ASCII Code und den Character zurück z.B. für den Buchstaben "a" => 97'a'
Soll das so sein? Ich möchte nur den Buchstaben, ohne ASCII Index.
8 Antworten auf diese Frage
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.