C# 将TimeSpan格式字符串转换为InputMask

C# 将TimeSpan格式字符串转换为InputMask,c#,regex,replace,C#,Regex,Replace,我有一个自定义格式的TimeSpan,如@“hh\:mm\:ss\.fff”,我想使用xceed()提供的MaskedTextBox帮助用户输入有效的时间跨度 现在,我将FormatString-属性转换为如下输入掩码 public string InputMask { get { string mask = FormatString.Replace('h', '0'); mask = mask.Replace('m', '0'); mask = mask.Rep

我有一个自定义格式的
TimeSpan
,如
@“hh\:mm\:ss\.fff”
,我想使用xceed()提供的
MaskedTextBox
帮助用户输入有效的时间跨度

现在,我将
FormatString
-属性转换为如下输入掩码

public string InputMask
{
  get
  {
    string mask = FormatString.Replace('h', '0');
    mask = mask.Replace('m', '0');
    mask = mask.Replace('s', '0');
    mask = mask.Replace('f', '0');
    mask = mask.Replace('d', '0');
    return mask;
  }
}

如果FormatString得到另一种我还不知道的格式,这个解决方案看起来很难看,而且不可维护。是否有更优雅的解决方案(例如使用regex替换)将任何字母替换为
0

这应该可以做到:

//using System.Text.RegularExpressions;

string input = @"hh\:mm\:ss\.fff"; //i suppose it's FormatString in your case, don't know the MaskedTextBox
string output = Regex.Replace(input, "[a-zA-Z]","0");

? 但是如果(char.isleter(mask[I])mask[I]=“0”,我会选择
(inti=0;I这不起作用,因为
掩码[i]
没有setter,而字符串是不可变的。然后我来到stackoverflow,在这里发布我的问题=DAny letter RegEx:
[a-zA-Z]