C# Zeichfolge entfernen
-
Und der Code ist ein super Beispiel dafür wie man Programme künstlich langsam machen kann.
Viel dümmer kann man es nicht anstellen.
-
µ schrieb:
loks schrieb:
Firefighter schrieb:
gelinqt schrieb:
string.Concat("3A5.551A2".TakeWhile(c => c != '.'))
Find ich nicht gut. Ist absolut nicht verstaendlich.
Nur für jemand der kein Linq kennt.
Der Code ist falsch und liefert nicht das, was Du vielleicht erwartest.
Soso. Also ich erwarte das er "3A5" liefert und hmm, genau das tut er auch. Was erwartest Du denn?
-
loks schrieb:
µ schrieb:
loks schrieb:
Firefighter schrieb:
gelinqt schrieb:
string.Concat("3A5.551A2".TakeWhile(c => c != '.'))
Find ich nicht gut. Ist absolut nicht verstaendlich.
Nur für jemand der kein Linq kennt.
Der Code ist falsch und liefert nicht das, was Du vielleicht erwartest.
Soso. Also ich erwarte das er "3A5" liefert und hmm, genau das tut er auch. Was erwartest Du denn?
string.Concat kennt erst ab NET 4.X IEnumerable. Davor wird die object-Überladung der Methode aufgerufen und Du kriegst nichts weiter als den Typ:
System.Linq.Enumerable+<TakeWhileIterator>d__40`1[System.Char]
Einfache Problem total umständlich gelöst und schon knallt's auf NET 3.5 und kleiner. Gerade weil string.Concat kein Teil von LINQ ist und die Lösung nicht mal sehr sauber ist.
-
Klarer Fall von Lesbarkeit vs. Coolness/"Es ist Stylisch"
-
David W schrieb:
Klarer Fall von Lesbarkeit vs. Coolness/"Es ist Stylisch"
Lesbarkeit ist auch immer eine Frage des Contexts. Wenn ich drum herum fast nur Linq Statements habe, dann kann es die Lesbarkeit auch fördern wenn man mit einer Lösung in der gleichen Technologie bleibt.
Sicher ist die Performance an der Stelle ein guter Kritikpunkt, wenn es sich um eine performancerelevante Stelle handelt.
Und Sorry: zeichen.SubString(0, zeichen.Indexof('.'))
ist auch nur dan lesbarer wenn man daran gewohnt ist. btw, ist es jetzte zeilen.IndexOf() oder Zeilen.IndexOf()+1 wenn man den Punkt nicht mitnehmen will? Jeder, der über die Frage nachdenken mußte beweist eher die schlechtere Lesbarkeit der IndexOf-Variante.
-
loks schrieb:
Und Sorry: zeichen.SubString(0, zeichen.Indexof('.'))
ist auch nur dan lesbarer wenn man daran gewohnt ist. btw, ist es jetzte zeilen.IndexOf() oder Zeilen.IndexOf()+1 wenn man den Punkt nicht mitnehmen will? Jeder, der über die Frage nachdenken mußte beweist eher die schlechtere Lesbarkeit der IndexOf-Variante.
Was ist denn das fuer ein bloedes Argument? Wenn ich mit dem zaehlen von Indizies nicht auskenne, dann hab ich in der Programmierung nichts verloren.
-
zeichen.SubString(0, zeichen.Indexof('.'))
ist eh falsch, wenn in "zeichen" gar kein Punkt ist.
Lesbar und korrekt ist das, was am einfachsten ist:
//Pre-condition: str != null int dotPos = str.IndexOf('.'); if (dotPos == -1) //return oder Fehler oder was auch immer string subStr = str.Substring(0, dotPos);
-
Geht nichtmal schief wenn kein Punkt enthalten ist:
str.Split('.')[0]
Und für unsere LINQ-Freunde
str.Split('.').First()
Noch ein bisschen Extension-Blödsinn
static string SubstrBefore(this string s, char c) { return s.Split(c)[0]; } str.SubstrBefore('.')
WOW!
Damit es aber nicht zu einem Technologiebruch und ganz viel Verwirrung kommt und man im LINQ Umfeld mit purem LINQ arbeiten kann
string str = "3A5.551A2" .TakeWhile(c => c != '.') .Select(c => c.ToString()) .Aggregate((a, b) => a + b);
Toll was heutzutage alles möglich ist!!!111
-
GPC schrieb:
zeichen.SubString(0, zeichen.Indexof('.'))
ist eh falsch, wenn in "zeichen" gar kein Punkt ist.
Lesbar und korrekt ist das, was am einfachsten ist:
//Pre-condition: str != null int dotPos = str.IndexOf('.'); if (dotPos == -1) //return oder Fehler oder was auch immer string subStr = str.Substring(0, dotPos);
-
Ich wollte mit meinem Problem keinen Krieg entfalten
aber ich bedanke mich trotzdem für die Lösungsvorschläge.