"> "> " />

C#の文字列へのcharの配列

私は電話番号のような文字列を持っています。私はラムダを使ってcharの配列を抽出しています。次に、この配列を文字列に変換します。これは私が持っているものです:

PhoneCandidate = "(123)-321-1234"; //this is just an example of what it could look like
var p = PhoneCandidate.Where(c => char.IsDigit(c)).ToArray();

string PhoneNumber = p.toString();

しかし、このコードを実行すると、変数PhoneNumberは配列内の値ではなくSystem.Char []になります。

私は何を変更する必要がありますか?

ありがとう。

0
この変更により、実行するのが速くなりますか?
追加された 著者 frenchie,
無関係ですが、Wh​​ere to a methodグループを変更することができます: PhoneCandidate.Where(char.IsDigit).ToArray()
追加された 著者 vcsjones,
いいえ、同じことにまとめられます。
追加された 著者 vcsjones,

7 答え

string コンストラクタを使用すると、 char []

string PhoneNumber = new string(p);
4
追加された
これは大丈夫です。ありがとう。
追加された 著者 frenchie,
これはより速く実行されるかどうか?文字列PhoneNumber =新しい文字列(PhoneCandidate.Where(c => char.IsDigit(c))。ToArray());
追加された 著者 frenchie,
さて、この明確化のためにありがとう。将来の明快さのためにそれを残すほうが良いでしょう。
追加された 著者 frenchie,
@frenchie:それは同じILにコンパイルされます。
追加された 著者 SLaks,
string phone = new string(p);

3
追加された
はい、ありがとうSLaks。
追加された 著者 frenchie,

Try with constructor res = new string(yourArray);

2
追加された
ok、ありがとう。
追加された 著者 frenchie,

文字列のコンストラクタ char [] をとります:

string PhoneNumber = new string(p);
2
追加された
ok、ありがとう。
追加された 著者 frenchie,

これをまったく新しい方向に向かおう:

Dim digits as New Regex(@"\d");
string  phoneNumber = digits.Replace(PhoneCandidate, "");
1
追加された
@frenchie実際のデータと音量に基づいて測定する必要がありますが、ここではRegexの方がずっと良いと思います。
追加された 著者 Joel Coehoorn,
あなたはどちらが速いと思いますか?正規表現かlinq式か?
追加された 著者 frenchie,

おそらく、おそらく最も良い方法は、(@ Adam Robinsonの)文字列コンストラクタを代わりに使用することです。 string.Join(string separator、params string [] value) MSDNドキュメントはこちら

PhoneCandidate = "(123)-321-1234"; //this is just an example of what it could look like
var p = PhoneCandidate.Where(c => char.IsDigit(c)).ToArray();

string str = string.Join(string.Empty,p);
0
追加された

p char [] であると仮定すると、以下を使用することができます:

String phoneNumber = new String(p);
0
追加された