2017-08-31 14 views
0

私は多くの文字を含む文字列を持っています。私は数字に変換するために次のコードを使用しましたが、新しい文字列tはまだ私に不完全な結果を与えます。たとえば :文字を数字に正しく変換する方法は?

tung2003 - 私が期待したもの> -1-1-1-12003

1161171101032003(116 トンのASCIIコードで、117はのASCIIコードです CH - Uは問題が

string t=null; 
foreach (char c in Properties.Settings.Default.password) 
{ 
     int ascii = (int)Char.GetNumericValue(c); 
     int counter=0; 
     counter = ascii; 
     t = t + Convert.ToString(counter); 
} 

あるアトラクター。私は新しい文字列が数字だけを含んでいてほしい。 「 - 」あなただけオフに取り除く取得したい場合

+3

'tung2003'はどのように '1-1-1-12003'に変換されるべきですか?私はここで何かの論理を見ることができません。 – HimBromBeere

+0

@HimBromBeereどうすればわかりますか?問題は私のコードにあります –

+2

あなたが上に書いたことはあなたが得るものです。しかし、代わりに*あなたは*期待していますか? – HimBromBeere

答えて

-1
string t = ""; 
foreach (char c in Properties.Settings.Default.password) 
{ 
     if (IsNumber(x)) t += System.Convert.ToInt32(c).ToString(); 
     else 
     { 
      t += c.ToString(); 
     } 
} 

また、使用にこのコードを:t =String.Replace(t, '-');

+1

これはOPが望んでいない** '** 11611711010350484851'を出力します。 – maccettura

+0

editted @maccettura –

2

それはあなたがないがあなたの期待出力に基づいて、数字のASCII値をしたいですかのように見えます。

string input = "tung2003"; 

string output = string.Empty; 

foreach(char c in input) 
{ 
    if(char.IsNumber(c)) 
    { 
     output += c; 
    } 
    else 
    { 
     output += ((byte)c).ToString(); 
    }   
} 
//output is now: 1161171101032003 

フィドルまた、短手のソリューションのためのLINQの式として追加here

1

:その場合は、あなたはちょうどこのような何かを行うことができます。

 // Method 1 Linq 
     string output = string.Concat(("tung2003".ToCharArray() 
      .Select(s=> char.IsDigit(s) ? s.ToString() : ((int)s).ToString()))); 

     // Method 2 
     string input = "tung2003"; 
     string output = string.Empty; 

     foreach (char c in input) 
     { 
      if (Char.IsDigit(c)) output += c.ToString(); 
      else output += ((int)c).ToString(); 
     } 
関連する問題