如何用C#将字符串"123456"格式化为"12-34-56"?
字符串格式化方案:将"123456"转为"12-34-56"
你的代码无法生效的原因是:string.Format("00-00-00", "123456") 中的格式字符串00-00-00是数值类型格式化规则,但你传入的第二个参数是字符串,string.Format会直接输出原字符串,不会应用数值格式。
以下是几种可行的解决方案:
方案一:转为数值后应用格式
先将字符串转为数值类型,再使用数值格式化规则:
string input = "123456"; if (long.TryParse(input, out long num)) { string formatted = string.Format("{0:00-00-00}", num); // 结果为 "12-34-56" }
注意:如果输入字符串可能包含非数字字符,需要先做有效性校验,避免转换失败。
方案二:直接字符串拆分拼接
如果能确定输入是固定6位的数字字符串,直接拆分后拼接更高效:
string input = "123456"; if (input.Length == 6) { string formatted = $"{input.Substring(0, 2)}-{input.Substring(2, 2)}-{input.Substring(4, 2)}"; // 结果为 "12-34-56" }
方案三:正则表达式替换
用正则分组匹配并替换,适合更灵活的场景(比如输入可能有其他分隔符):
using System.Text.RegularExpressions; string input = "123456"; string formatted = Regex.Replace(input, @"(\d{2})(\d{2})(\d{2})", "$1-$2-$3"); // 结果为 "12-34-56"
内容的提问来源于stack exchange,提问作者Canon
相关产品推荐
相关产品推荐

