Question

Dans C # .NET, voici un exemple simple de la façon de formater les numéros en chaînes en utilisant des chaînes de format personnalisées: (Exemple tiré de: http://www.csharp-exemples.net/string-forat-int/)

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

Existe-t-il un moyen de convertir cette chaîne formatée en un long / entier? Y a-t-il une part pour faire ceci:

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

J'ai vu que DateTime a une méthode ParseExact qui peut bien faire cela. Mais je n'ai pas vu de tel pour int / long / décimal / double.

Était-ce utile?

La solution

Just Exploit Tous les caractères non numériques, puis analysez cette chaîne.

Autres conseils

Vous pouvez regercher tous les nombres non numériques, et ce qu'il vous reste, c'est une chaîne de nombres que vous pouvez analyser.

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

Eh bien, tu peux toujours faire

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

Au fait, étant donné que vous analysez une chaîne reçue de certains IO, Je suggère d'utiliser plus sécurisé (en termes de conversion) INT32.TRYPARSE méthode.

Le chemin comme tu décrit n'existe pas réellement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top