質問

In C#.Net, here's a simple example of how to format numbers into strings using custom format strings: (example taken from: http://www.csharp-examples.net/string-format-int/)

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

Is there a way to convert this formatted string back into a long/integer ? Is there someway to do this :

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

I saw that DateTime has a method ParseExact which can do this work well. But I did not see any such thing for int/long/decimal/double.

役に立ちましたか?

解決

Just Regex out all of the non-numeric characters, then parse that string.

他のヒント

You can regex out all of the non numeric numbers, and what you're left with is a string of numbers that you can parse.

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.
}

Well, you can always do

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

By the way, considering that you're parsing a string received from some IO, I would suggest to use more secure (in terms of conversion) Int32.TryParse method.

The way like you described doesn't actually exist.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top