将TimeSpan Formatstring转换为InputMask

时间:2014-01-08 15:05:45

标签: c# regex replace

我有一个TimeSpan的自定义格式,例如@"hh\:mm\:ss\.fff",并希望使用xceed(https://wpftoolkit.codeplex.com/wikipage?title=MaskedTextBox&referringTitle=Home)中的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获得另一种我还不知道的格式,这个解决方案看起来很难看并且无法维护。是否有更优雅的解决方案(例如使用正则表达式替换),用0替换任何字母?

1 个答案:

答案 0 :(得分:2)

这应该可以解决问题:

//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");