将蒙版应用于字符串

Pah*_*ker 7 c# .net-3.5

我正在从表中读取字符串ID值.当ID是由用户输入的,它是与所述用户定义的输入掩码完成的,所以掩模本来类似000-00-0000,##-######,AA-9999999等掩模将由使用者而变化,所以必须在运行时评估.

假设表中只存储了字母数字文本,那么应用该掩码生成新字符串的最佳方法是什么?

例如:

表值="123456789"

如果用户定义了掩码000-00-0000,我想得到字符串123-45-6789.

如果用户定义了掩码AA-9999999,我想得到字符串12-3456789.

如果用户定义了掩码FR999_999999,我想得到字符串FR123_456789.

Jar*_*Par 6

看起来掩模图案是它将为掩模中的每个破折号插入匹配的破折号.如果是这种情况那么这应该有效.

public static string MaskValue(string mask, string value) {
  var builder = new System.Text.StringBuilder();
  var maskIndex = 0;
  var valueIndex = 0;
  while (maskIndex < mask.Length && valueIndex < value.Length) {
    if (mask[maskIndex] == '-') {
      builder.Append('-');
      maskIndex++;
    } else {
      builder.Append(value[valueIndex]);
      maskIndex++;
      valueIndex++;
    }
  }

  // Add in the remainder of the value
  if (valueIndex + 1 < value.Length) {
    builder.Append(value.Substring(valueIndex);
  }

  return builder.ToString();
}
Run Code Online (Sandbox Code Playgroud)


Pah*_*ker 0

这正是我所需要的。唯一的缺点是它将我与 Windows 窗体程序集联系在一起。

        MaskedTextBox mtb = new MaskedTextBox("FR999_999999");
        mtb.Text = "123456789";
        return mtb.Text;
Run Code Online (Sandbox Code Playgroud)