4

C#.Net で、カスタム フォーマット文字列を使用して数値を文字列にフォーマットする方法の簡単な例を次に示します (例: http://www.csharp-examples.net/string-format-int/から取得)

String.Format("{0:+### ### ### ###}", 447900123456); // "+447 900 123 456"
String.Format("{0:##-####-####}", 8958712551);       // "89-5871-2551"

このフォーマットされた文字列を long/integer に変換する方法はありますか? これを行う方法はありますか:

long PhoneNumber = Int32.Parse("89-5871-2551", "{0:##-####-####}");

DateTime には、これをうまく実行できるメソッド ParseExact があることがわかりました。しかし、int/long/decimal/double についてはそのようなものは見当たりませんでした。

4

3 に答える 3

4

数値以外のすべての数値を正規表現することができ、残っているのは解析可能な数値の文字列です。

var myPhoneNumber = "89-5871-2551";
var strippedPhoneNumber = Regex.Replace(myPhoneNumber, @"[^\d]", "");
int intRepresentation;

if (Int32.TryParse(strippedPhoneNumber, out intRepresentation))
{
    // It was assigned, intRepresentation = 8958712551
    // now you can use intRepresentation.

} else {
    // It was not assigned, intRepresentation is still null.
}
于 2012-02-27T19:39:04.443 に答える
1

ええと、あなたはいつでもすることができます

long PhoneNumber = Int32.Parse("89-5871-2551".
                Replace(new char[]{'-','+',whatever..}).Trim());

ちなみに、ある人から受け取った文字列を解析していることを考えると、IOより安全な(変換の観点から)Int32.TryParseメソッドを使用することをお勧めします。

あなたが説明したような方法は実際には存在しません。

于 2012-02-27T19:36:53.643 に答える
0

数字以外の文字をすべて正規表現してから、その文字列を解析するだけです。

于 2012-02-27T19:36:49.350 に答える