string val = "123-12-1234" .Replace ("-", String.Empty); // Hinweis: Bitte versuchen Sie zumindest, ein Problem zu lösen, bevor Sie solche Fragen stellen.
Brandon Moretz
9
Warum das Downvote? Es mag eine einfache Frage sein, aber das macht es sicher nicht falsch? Neue Benutzer können ziemlich schnell entmutigt werden ...
+1 für die Erwähnung, dass die alternative Methode eine "Überlastung" ist
Nick
Versuchen Sie, das Zeichen \ 0 durch die obige Überladung zu ersetzen, und es wird nicht funktionieren! Das Zeichen \ 0 wird nicht ersetzt. Dies gilt insbesondere für die Arbeit mit Zeichenfolgendaten, die von Snmp-Geräten empfangen wurden
Ich hatte eine Variable anstelle des "-" oben und verwendete stattdessen charToReplace.ToString ().
Zonus
44
Da die anderen Antworten hier, obwohl richtig, Ihre anfänglichen Zweifel nicht explizit ansprechen, werde ich es tun.
Wenn Sie anrufen string.Replace(char oldChar, char newChar) , werden die Vorkommen eines Zeichens durch ein anderes Zeichen ersetzt. Es ist ein Eins-zu-Eins-Ersatz. Aus diesem Grund ist die Länge der resultierenden Zeichenfolge gleich.
Was Sie wollen, ist , die Bindestriche zu entfernen , was natürlich nicht dasselbe ist, als sie durch ein anderes Zeichen zu ersetzen. Sie können es nicht durch "kein Zeichen" ersetzen, da 1 Zeichen immer 1 Zeichen ist. Aus diesem Grund müssen Sie die Überladung verwenden, die Zeichenfolgen benötigt: Zeichenfolgen können unterschiedliche Längen haben. Wenn Sie eine Zeichenfolge der Länge 1 durch eine Zeichenfolge der Länge 0 ersetzen, werden die Striche entfernt und durch "nichts" ersetzt.
Wenn Sie ein Zeichen in einer Zeichenfolge durch ein leeres Zeichen ersetzen möchten, dh dieses Zeichen aus einer Zeichenfolge entfernen möchten, lesen Sie die Antwort von R. Martinho Fernandes.
Hier ist ein Beispiel, wie Sie ein Zeichen aus einer Zeichenfolge entfernen (durch ein "leeres Zeichen" ersetzen):
Wenn Sie sich in einer Schleife befinden, nehmen wir an, Sie durchlaufen eine Liste von Interpunktionszeichen, die Sie entfernen möchten. Sie können Folgendes tun:
privateconststring PunctuationChars = ".,!?$";
foreach (var word in words)
{
var word_modified = word;
var modified = false;
foreach (var punctuationChar in PunctuationChars)
{
if (word.IndexOf(punctuationChar) > 0)
{
modified = true;
word_modified = word_modified.Replace("" + punctuationChar, "");
}
}
//////////MORE CODE
}
Ich habe eine lateinische Version des Codes von Razvan Dumitru, weil wir sogar einen Millionenindikator verwenden. Natürlich benutze ich einen doppelten Ersatz: D.
Antworten:
Sie können eine andere Überladung
Replace()
dieser Zeichenfolge verwenden.val = val.Replace("-", string.Empty)
quelle
Da die anderen Antworten hier, obwohl richtig, Ihre anfänglichen Zweifel nicht explizit ansprechen, werde ich es tun.
Wenn Sie anrufen
string.Replace(char oldChar, char newChar)
, werden die Vorkommen eines Zeichens durch ein anderes Zeichen ersetzt. Es ist ein Eins-zu-Eins-Ersatz. Aus diesem Grund ist die Länge der resultierenden Zeichenfolge gleich.Was Sie wollen, ist , die Bindestriche zu entfernen , was natürlich nicht dasselbe ist, als sie durch ein anderes Zeichen zu ersetzen. Sie können es nicht durch "kein Zeichen" ersetzen, da 1 Zeichen immer 1 Zeichen ist. Aus diesem Grund müssen Sie die Überladung verwenden, die Zeichenfolgen benötigt: Zeichenfolgen können unterschiedliche Längen haben. Wenn Sie eine Zeichenfolge der Länge 1 durch eine Zeichenfolge der Länge 0 ersetzen, werden die Striche entfernt und durch "nichts" ersetzt.
quelle
Das scheint zu einfach, aber:
val.Replace("-","");
quelle
val.Replace("-", "");
MSDN-Quelle
quelle
string val = "123-12-1234"; val = val.Replace("-", ""); // result: 123121234
quelle
Wenn Sie ein Zeichen in einer Zeichenfolge durch ein leeres Zeichen ersetzen möchten, dh dieses Zeichen aus einer Zeichenfolge entfernen möchten, lesen Sie die Antwort von R. Martinho Fernandes.
Hier ist ein Beispiel, wie Sie ein Zeichen aus einer Zeichenfolge entfernen (durch ein "leeres Zeichen" ersetzen):
public static string RemoveCharFromString(string input, char charItem) { int indexOfChar = input.IndexOf(charItem); if (indexOfChar >= 0) { input = input.Remove(indexOfChar, 1); } return input; }
oder diese Version, die alle Wiederholungen eines Zeichens in einer Zeichenfolge entfernt:
public static string RemoveCharFromString(string input, char charItem) { int indexOfChar = input.IndexOf(charItem); if (indexOfChar < 0) { return input; } return RemoveCharFromString(input.Remove(indexOfChar, 1), charItem); }
quelle
Wenn Sie sich in einer Schleife befinden, nehmen wir an, Sie durchlaufen eine Liste von Interpunktionszeichen, die Sie entfernen möchten. Sie können Folgendes tun:
private const string PunctuationChars = ".,!?$"; foreach (var word in words) { var word_modified = word; var modified = false; foreach (var punctuationChar in PunctuationChars) { if (word.IndexOf(punctuationChar) > 0) { modified = true; word_modified = word_modified.Replace("" + punctuationChar, ""); } } //////////MORE CODE }
Der Trick ist der folgende:
word_modified.Replace("" + punctuationChar, "");
quelle
Ich habe eine lateinische Version des Codes von Razvan Dumitru, weil wir sogar einen Millionenindikator verwenden. Natürlich benutze ich einen doppelten Ersatz: D.
public static string CleanNumb(string numb) { foreach (char c in ".,'´") numb = numb.Replace(c, ' '); return numb.Replace(" ", ""); }
quelle