4 Stimmen

Einfacher Weg, das Dollarzeichen in C# zu entfernen

Ich habe einen DataRow und ich bekomme eines der Elemente, das ein Betrag mit einem Dollarzeichen ist. Ich rufe ein toString darauf auf. Gibt es eine andere Methode, die ich aufrufen kann, um das Dollarzeichen zu entfernen, wenn es vorhanden ist.

Also so etwas:

dr.ToString.Substring(1, dr.ToString.Length);

Aber eher bedingt, falls das Dollarzeichen jemals wieder auftaucht.

Ich versuche dies durch explizites Definieren eines anderen Strings zu erreichen.

18voto

StingyJack Punkte 18514
Convert.ToString(dr(Spaltenname)).Replace("$", String.Empty)

-- Wenn Sie mit einer DataTable arbeiten, müssen Sie den Wert (standardmäßig Object) in einen String umwandeln, damit Sie bereits einen String erstellen, und dann einen weiteren mit der Ersetzung. Es gibt wirklich keine andere Möglichkeit, dies zu umgehen, aber Sie werden nur Leistungsunterschiede sehen, wenn Sie mit Zehntausenden von Operationen arbeiten.

9voto

hangy Punkte 10576

Sie könnten auch verwenden

string trimmed = (dr als string).Trim('$');

oder

string trimmed = (dr als string).TrimStart('$');

1 Stimmen

Ich denke, das ist die beste Antwort - damit erfolgreiche Einreichungen von Werten wie "$12$56$.$12" nicht als 1256.12 zugelassen werden. Möglicherweise möchten Sie es auch mit .Trim().TrimStart('$') voranstellen, um Leerzeichen zu entfernen.

7voto

Shaun Bowe Punkte 9412

Wenn Sie C# 3.0 oder höher verwenden, könnten Sie Erweiterungsmethoden verwenden.

public static string RemoveNonNumeric(this string s)
{
   return s.Replace("$", "");
}

Dann könnte Ihr Code geändert werden zu:

((String)dr[columnName]).RemoveNonNumeric();

Dies würde es Ihnen ermöglichen, die Implementierung von RemoveNonNumeric später zu ändern, um Dinge wie Kommas oder $-Symbole in Fremdwährungen zu entfernen, usw.

Außerdem, wenn das Objekt aus der Datenbank tatsächlich ein String ist, sollten Sie nicht ToString() aufrufen, da das Objekt bereits ein String ist. Sie können es stattdessen casten.

3voto

itsmatt Punkte 30839

Regex würde funktionieren.

Regex.Replace(denString, "$", "");

Aber es gibt mehrere Möglichkeiten, dieses Problem zu lösen.

2voto

devmode Punkte 3257

Dr[columeName].ToString().Replace("$", String.Empty)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X