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.
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
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
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
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. Am 1.3.2020 um 08:20 schrieb Whiz-zarD: ein String aus mehreren Zeichen besteht Aufklappen 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
0 Whiz-zarD Geschrieben 1. März 2020 Geschrieben 1. März 2020 Motzen wegen des motzens Willen, oder was? Am 1.3.2020 um 08:42 schrieb KeeperOfCoffee: Was ist str? Das ist in dem Code gar nicht deklariert. Aufklappen Aus dem Kontext kann man doch erkennen, dass es sich um ein String handelt... Am 1.3.2020 um 08:42 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. Aufklappen Und wo liegt nun der Unterschied zwischen Am 1.3.2020 um 08:20 schrieb Whiz-zarD: während ein String aus mehreren Zeichen besteht. Aufklappen und Am 1.3.2020 um 08:42 schrieb KeeperOfCoffee: Ein String ist kann beliebig viele Zeichen sein. Aufklappen ? Erkläre mir das mal. Zumal ein String eben nicht beliebig viele Zeichen haben kann, da ein String auf 2 GB beschränkt ist...
0 KeeperOfCoffee Geschrieben 1. März 2020 Geschrieben 1. März 2020 Am 1.3.2020 um 08:20 schrieb Whiz-zarD: Ein char ist nur ein Zeichen, während ein String aus mehreren Zeichen besteht Aufklappen Wenn wir davon ausgehen, dass es ein Anfänger ist, kann man dies sehr leicht als Implizierung sehen. Am 1.3.2020 um 09:22 schrieb Whiz-zarD: Motzen wegen des motzens Willen, oder was? Aufklappen Ja ich bin hier im Forum ein total typiscer User der jeden anpöbelt und rummotzt. Am 1.3.2020 um 09:22 schrieb Whiz-zarD: Aus dem Kontext kann man doch erkennen, dass es sich um ein String handelt... Aufklappen Nein tut es nicht, da sein Code sonst funktionieren würde. Am 1.3.2020 um 09:22 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... Aufklappen 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
0 Whiz-zarD Geschrieben 1. März 2020 Geschrieben 1. März 2020 Am 1.3.2020 um 09:40 schrieb KeeperOfCoffee: Ja ich bin hier im Forum ein total typiscer User der jeden anpöbelt und rummotzt. Aufklappen Ja, so kommt es mir gerade vor. Am 1.3.2020 um 09:40 schrieb KeeperOfCoffee: Nein tut es nicht, da sein Code sonst funktionieren würde. Aufklappen 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... Am 1.3.2020 um 09:40 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. Aufklappen 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!
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. Am 1.3.2020 um 09:53 schrieb Whiz-zarD: Ja, so kommt es mir gerade vor. Aufklappen 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. Am 1.3.2020 um 09:53 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. Aufklappen Ja stimmt, wenn ich davon ausgehe muss ichs auch von mir erwarten. Am 1.3.2020 um 09:53 schrieb Whiz-zarD: . Erzähle doch nicht so einen Quatsch! Aufklappen Stimmt mein Fehler. Bin ned mehr am PC und war zu faul nachzusehen. War überzeugt, dass es da irgendwas gibt. NowAzubi reagierte darauf 1
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
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden