Ich habe eine Zeichenfolge wie diese:
string val = "123-12-1234";
Wie kann ich die Bindestriche durch eine leere Zeichenfolge in C # ersetzen?
ich meine val.Replace(char oldChar, newChar);
Was muss rein oldCharund newChar.
Ich habe eine Zeichenfolge wie diese:
string val = "123-12-1234";
Wie kann ich die Bindestriche durch eine leere Zeichenfolge in C # ersetzen?
ich meine val.Replace(char oldChar, newChar);
Was muss rein oldCharund newChar.
Antworten:
Sie können eine andere Überladung Replace()dieser Zeichenfolge verwenden.
val = val.Replace("-", string.Empty)
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.
Das scheint zu einfach, aber:
val.Replace("-","");
val.Replace("-", "");
string val = "123-12-1234";
val = val.Replace("-", ""); // result: 123121234
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);
}
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, "");
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(" ", "");
}