Joh*_*aft 15
我会做这样的事情..
string value = "8329874566";
value = value.Insert(6, "-").Insert(3, "-");
Run Code Online (Sandbox Code Playgroud)
Cri*_*spy 13
您将其转换为数字,然后格式化字符串.我最喜欢的是使用一些子串方法更容易阅读/理解正在发生的事情.
string str = "832984566";
string val = long.Parse(str).ToString("###-##-####");
Run Code Online (Sandbox Code Playgroud)
可能有一个几乎难以理解的难以理解的正则表达式解决方案,但这个解决方案非常易读且易于使用.
.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".
您是否正在尝试像美国社会保障号码那样做?即,在第三个和第五个数字之后用连字符?如果是这样:
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)
只是出于完整性,正则表达式变体:
Regex.Replace(s, @"(\d{3})(\d{2})(\d{4})", "$1-$2-$3");
Run Code Online (Sandbox Code Playgroud)
不过,我认为Insert变体是最干净的.