Zum Inhalt springen
  • 0

c# | String manipulation


TheWorldDrown

Frage

8 Antworten auf diese Frage

Empfohlene Beiträge

  • 0

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 von Whiz-zarD
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0

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 von TheWorldDrown
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0

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 von Whiz-zarD
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0

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.

stringObj.PNG.873fa3dcaa6d7c9a3595b7d1f8b69396.PNG

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). 

stringnotchar.PNG.9624ef4e939cfa3c1a4045a45ce0cd29.PNG

Ü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 von KeeperOfCoffee
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0

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...

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0
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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0
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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Diese Frage beantworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...