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());

顺便说一句,考虑到您正在解析从 some 收到的字符串IO,我建议使用更安全的(在转换方面)Int32.TryParse方法。

所描述的方式实际上并不存在。

于 2012-02-27T19:36:53.643 回答
0

只需正则表达式出所有非数字字符,然后解析该字符串。

于 2012-02-27T19:36:49.350 回答