C# string mit int vergleichen?

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Es überrascht mich, dass C# einen solchen Vergleich (Char mit Int) überhaupt zulässt. Nch meinen Versuchen wird das Char in seinen Codepunkt der aktuellen Zeichentabelle (ANSI oder Unicode) umgewandelt. Eigentlich widerspricht das der Philosophie von C#, dass ein Zeichen und seine Darstellung als Codepunkt völlig verschiedene Dinge sind.

(Die "arabischen" Ziffern der westlichen Zeichensätze haben die Codepunkte 48 bis 57 bzw. 0x30 bis 0x39. Im Unicode gibt es aber auch weitere Codepunkte für Ziffern anderer Kulturen.)

Von daher nimm entweder erst eine Abfrage, ob es überhaupt eine Zahl ist, und dann eine Umwandlung, oder TryParse (was beides gleichzeitig macht):

Boolean result = Char.IsNumeric(readText[h+g]) && 9 >= Integer.Parse(readText[h+g]
int ziffer; 
Boolean result = Integer.TryParse(readText[h+g], ziffer) && 9 >= ziffer
Woher ich das weiß:Berufserfahrung – Software-Entwickler

EinJuls 
Beitragsersteller
 09.06.2017, 21:59

Nachdem ich mir durch dich das mit dem char eingefallen ist wüsste ich worran es lag. PS gans einfach mann musste die 9 in '9' setzten aber trotzdem danke;D

0
PWolff  09.06.2017, 22:03
@EinJuls

Stimmt, so würde ich das in C auch machen. Aber da ich versuche, möglichst in der Philosophie der Umgebung zu denken, in der ich arbeite, betrachte ich Chars und Strings als Dinge, die fast nur zwecks alphabetischer Sortierung vergleichbar sind.

1

h+g ist ein index in einem chararray? Im Regelfall funktioniert die Methode Convert.ToInt32 sehr gut. Die Abfrage müsste so ausschauen:

if (Convert.ToInt32(readText[h+g]) >= 9)

Wenn dass alles nichts nützt einfach mal einen Haltepunkt in der jeweiligen Codezeile setzen und im Debugmodus den Wert des Chararrays im Index h+g überwachen.

Mit ein wenig mehr Code könnte ich dir auch noch besser helfen. Nur die Abfrage ist vielleicht nicht einmal das Problem.


EinJuls 
Beitragsersteller
 09.06.2017, 22:00

Nachdem ich mir durch dich das mit dem char eingefallen ist wüsste ich worran es lag. PS gans einfach mann musste die 9 in '9' setzten aber trotzdem danke;D

0