2016-12-11 1 views
0

私はユーザーがランダムな文字を入力する配列を持っています。すべての数字を記号「*」で置き換える必要があります。そして最悪のことは、組み込み機能を使えないことです!できれば、助けてください!C#記号で数字を置換する

+1

あなたのコードを追加することもできますしてください?そして最終的にはあなたが得る可能性のあるエラー? – Tapaka

+0

そして、関数の中で何が構築されていると思いますか?正規表現? ..? –

答えて

1

:あなたはこのようなものを使用することができる機能で構築されたとして、正規表現を考慮すれば

または、。

char.IsNumberなし。ここ
string input = "ArrayWithR23andomChar44acter3sWit55hNumbersI6nIt"; 
char[] array = input.ToCharArray(); 

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

    array[i] = '*'; 
} 

あなたはこのようにそれを行うことができます。

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

ありがとう! :) –

+0

数字文字0から9は、すべての数字文字の妥当なサブセットです。特に、文字ごとに1つのUTF-16コード単位( 'char')しか必要なく、コード単位が1つの範囲にあるためです。しかし、 'if(input [i]> = '0' && input [i] <= '9')'ははるかに読みやすくなっています。 –

1

基本的に文字の配列は文字列ではありません。この正規表現を使用して、ジョブを実行することができます。たとえば:

string test = "dsad54dsads56dasd7a8s 5468sda"; 

正規表現:

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

または

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

違いは、最初のものは一つだけ*ですべての連続した番号を交換することです。 2番目の数字はすべての単一の数字を*で置き換えます。 char.Numberあなたは数字のためにASCII TABLEから数値値を使用する必要がある機能で構築されている場合ここで

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

    return c; 
}).ToArray(); 
関連する問題