2016-12-11 14 views
0

Ich habe ein Array, in dem der Benutzer zufällige Zeichen eingibt, und ich muss alle Zahlen durch das Symbol "*" ersetzen. Und das Schlimmste ist, dass ich eingebaute Funktionen nicht nutzen kann! Wenn du kannst, hilf bitte!C# Ersetzen von Zahlen durch Symbole

+1

Könnten Sie Ihren Code hinzufügen, bitte? Und eventuell irgendwelche Fehler, die Sie bekommen könnten? – Tapaka

+0

Und, was halten Sie für in Funktionen eingebaut? Regex? ..? –

Antwort

1

Hier wenn char.Number ist bauen in Funktion sollten Sie Zahlen verwenden, um Werte von ASCII TABLE für die Zahlen.

string input = "ArrayWithR23andomChar44acter3sWit55hNumbersI6nIt"; 
char[] array = input.ToCharArray(); 

for(int i=0; i < array.Length; i++) 
{ 
    if (!char.IsNumber(input[i])) 
     continue; 

    array[i] = '*'; 
} 

hier ohne char.IsNumber können Sie es wie folgt tun:

string input = "ArrayWithR23andomChar44acter3sWit55hNumbersI6nIt"; 
char[] array = input.ToCharArray(); 

for(int i=0; i < array.Length; i++) 
{ 
    if ((int)input[i] >= 48 && (int)input[i] <=57) 
    { 
     array[i] = '*'; 
    } 
} 
+1

Danke, Alter! :) –

+0

Die Zahlenzeichen 0 bis 9 sind eine sinnvolle Teilmenge aller Zahlenzeichen, zumal sie nur eine UTF-16-Codeeinheit ('char') pro Zeichen benötigen und ihre Code-Einheiten in einem Bereich liegen. Aber "if (input [i]> = '0' && input [i] <= '9') ist viel besser lesbar. –

1

Grundsätzlich Array von Zeichen ist nichts als Zeichenfolge. Sie können diese Regex verwenden, um die Arbeit zu erledigen. Zum Beispiel:

string test = "dsad54dsads56dasd7a8s 5468sda"; 

Regex:

string t1 = Regex.Replace(test, "[0-9]+", "*"); 

oder

string t1 = Regex.Replace(test, "[0-9]", "*"); 

Der Unterschied besteht darin, dass das erste fortlaufende Nummern, alle mit nur einem ersetzen wird *. Der zweite ersetzt jede einzelne Zahl durch *.

Oder, wenn regex betrachtet wird, wie in Funktion gebaut Sie so etwas wie diese verwenden:

char[] t2 = test.Select(c => 
{ 
    if (c >= '0' && c <= '9') 
    { 
     return '*'; 
    } 

    return c; 
}).ToArray();