【问题标题】:Formating a string (mask?)格式化字符串(掩码?)
【发布时间】:2020-07-08 09:25:58
【问题描述】:

我发现使用 long.Parse,ToString 可以接受参数,例如,我可以将其格式化为所需的字符串。

Input:    
Console.WriteLine(long.Parse("123").ToString("#-#-#"));

Output:
1-2-3

我想对字符串做类似的事情,假设我想解析字符串以格式化####-###-####。有没有什么方法可以在没有正则表达式的情况下使用一个像上面的例子那样做?

编辑

好的,所以我可能被误解了,我不想解析数字,而是字符串。我可以在 python 中这样做:

'{}-{}-{}'.format(*'abc') 我会收到 a-b-c。在 C# 中,它似乎只适用于数字。

【问题讨论】:

  • 你的意思是String.Format吗?
  • @Jophyjob 我的意思是 aaaabbbcccc 到 aaa-bbb-ccc
  • @HoneyboyWilson 我试过了,但我想改变字符串的格式,我发现到处都是数字:/
  • 投票重新开放,因为提议的欺骗仅涵盖数字。

标签: c#


【解决方案1】:

试试这个

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using System.Globalization;
using System.Text;

namespace Rextester
{
    public class Program
    {
        public static void Main(string[] args)
        {

            Console.WriteLine("Hello, world!");

            Console.WriteLine("helloWorld".ToPhoneNumber("###-###-####"));
        }
    }

    public static class AdvancedFormatString
    {    
        public static string ToPhoneNumber(this string strArg, string outputformat)
        {
            if (outputformat == null)
                return strArg;

            var sb = new StringBuilder();
            var i = 0;

            foreach (var c in outputformat)
            {
                if (c == '#')
                {
                    if (i < strArg.Length)
                    {
                        sb.Append(strArg[i]);
                    }
                    i++;
                }
                else
                {
                    sb.Append(c);
                }
            }

            return sb.ToString();
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多