如何放置 - 在一个字符串中

Nov*_*per 4 c# string

我有一个字符串"8329874566".我想放置 - 像这样的字符串"832-98-4566"

我可以使用哪个字符串函数?

Joh*_*aft 15

我会做这样的事情..

  string value = "8329874566";
  value = value.Insert(6, "-").Insert(3, "-");
Run Code Online (Sandbox Code Playgroud)

  • +1.肯定比摆弄子串更好,并试图保持一致. (3认同)
  • 请注意,您应首先插入后面的位置,这样您就不会先插入先前的位置来移动它们. (3认同)

Cri*_*spy 13

您将其转换为数字,然后格式化字符串.我最喜欢的是使用一些子串方法更容易阅读/理解正在发生的事情.

string str = "832984566";
string val = long.Parse(str).ToString("###-##-####");
Run Code Online (Sandbox Code Playgroud)


Mar*_*elo 8

可能有一个几乎难以理解的难以理解的正则表达式解决方案,但这个解决方案非常易读且易于使用.

.Substring()方法的第一个参数是你开始获取字符的地方,第二个是你想要获得的字符数,而不是给它设置一个默认值为value.length -1(得到字符直到结束的字符串):

String value = "8329874566";

String Result = value.Substring(0,3) + "-" + value.Substring(3,2) + "-" + value.Substring(6);
Run Code Online (Sandbox Code Playgroud)

- [编辑] -

刚刚注意到你没有在你提供的预期结果示例中使用其中一个数字AT(数字'7'),但是如果你想要它,只需将最后一个子字符串更改为"5",如果你想要'7' '但是不要在最后一组中使用5个数字,让它像"5,4".


Jus*_* R. 5

您是否正在尝试像美国社会保障号码那样做?即,在第三个和第五个数字之后用连字符?如果是这样:

string s = "8329874566";
string t = String.Format("{0}-{1}-{2}", s.Substring(0, 3), s.Substring(3, 2), s.Substring(5));
Run Code Online (Sandbox Code Playgroud)


Joe*_*oey 5

只是出于完整性,正则表达式变体:

Regex.Replace(s, @"(\d{3})(\d{2})(\d{4})", "$1-$2-$3");
Run Code Online (Sandbox Code Playgroud)

不过,我认为Insert变体是最干净的.