首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >格式化字符串/电话号码

格式化字符串/电话号码
EN

Stack Overflow用户
提问于 2011-05-27 01:40:21
回答 5查看 4.4K关注 0票数 3

我想使用C#格式化电话号码。格式为(XX) YYY-ZZZZ或(XXX) YYY-ZZZZ。因此,我需要格式化正确的七位数,然后剩下两到三位用于区号。

{编辑}

Phone另存为长度为9或10的普通字符串/VARChar

请建议解决方案。

谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-05-27 01:49:01

存储为字符串或数字值的电话号码。如果它被存储为整数值,那么应该可以这样做:

代码语言:javascript
复制
string formattedPhone = rawNumber.ToString( "(#00) 000-0000" ) ;

如果它是以字符串的形式存储的,那么您需要查看它的长度并开始分割它,如下所示:

代码语言:javascript
复制
static string FormatAsPhoneNumber( string s )
{
  if ( s == null ) throw new ArgumentNullException() ;
  if ( s.Length > 10 ) throw new ArgumentOutOfRangeException() ;

  StringBuilder sb = new StringBuilder() ;
  int           p  = 0 ;
  int           remaining = s.Length ;

  if ( remaining > 7 )
  {
    int areaCodeLength = remaining - 7 ;

    sb.Append("(").Append(s.Substring(p,areaCodeLength)).Append(") ") ;

    p         += areaCodeLength ;
    remaining -= areaCodeLength ;

  }
  if ( remaining > 4 )
  {
    int exchangeLength = remaining - 4 ;

    sb.Append(s.Substring(p,exchangeLength)).Append("-") ;

    p         += exchangeLength ;
    remaining -= exchangeLength ;

  }

  sb.Append(s.Substring(p) ) ;

  string formatted = sb.ToString() ;
  return formatted ;
}

结果:

代码语言:javascript
复制
Raw         Formatted
---------- --------------
1          1
12         12
123        123
1234       1234
12345      1-2345
123456     12-3456
1234567    123-4567
12345678   (1) 234-5678
123456789  (12) 345-6789
1234567890 (123) 456-7890
票数 0
EN

Stack Overflow用户

发布于 2011-05-27 01:46:12

如果我没理解错的话,您想要一个接收int并返回带有string格式的fone数字的函数。如果是这样的话,你可以这样做:

代码语言:javascript
复制
public string GetPhoneNumber(int number) {
    string n = number.ToString();
    if (n.Length == 9)
        return "(" + n.Substring(0, 2) + ") " + n.Substring(2, 3) + "-" + n.Substring(5, 4);
    else
        return "(" + n.Substring(0, 3) + ") " + n.Substring(3, 3) + "-" + n.Substring(6, 4);
}
票数 2
EN

Stack Overflow用户

发布于 2011-05-27 01:45:53

假设电话号码存储为长数字,并且是9位或10位数字,您可以执行以下操作:

代码语言:javascript
复制
if (number > 999999999L)
{
     return String.Format("{0:(###) ###-####}", number);
}
else
{
     return String.Format("{0:(##) ###-####}", number);
}

当然,只有当数字恰好是9或10位数长度时,这才有效。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6142774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档