Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对字符串应用掩码_C#_.net 3.5 - Fatal编程技术网

C# 对字符串应用掩码

C# 对字符串应用掩码,c#,.net-3.5,C#,.net 3.5,我正在从表中读取字符串ID值。当用户输入ID时,它是使用用户定义的输入掩码来完成的,因此掩码可能是类似于000-00-0000,##-###,AA-999999,等等。掩码会因用户而异,因此必须在运行时进行评估 如果表中只存储字母数字文本,那么使用该掩码生成新字符串的最佳方法是什么 例如: 表值=“123456789” 如果用户定义了000-00-0000的掩码,我想得到字符串123-45-6789 如果用户定义了AA-9999999的掩码,我想得到字符串12-3456789 如果用户定义了FR

我正在从表中读取字符串ID值。当用户输入ID时,它是使用用户定义的输入掩码来完成的,因此掩码可能是类似于
000-00-0000
##-###
AA-999999
,等等。掩码会因用户而异,因此必须在运行时进行评估

如果表中只存储字母数字文本,那么使用该掩码生成新字符串的最佳方法是什么

例如:

表值=“123456789”

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

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


如果用户定义了
FR999\u999999
的掩码,我想得到字符串
FR123\u 456789

,似乎掩码模式是它将为掩码中的每个破折号插入匹配的破折号。如果是这样的话,这应该行得通

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();
}
公共静态字符串掩码值(字符串掩码,字符串值){
var builder=new System.Text.StringBuilder();
var maskIndex=0;
var valueIndex=0;
while(maskIndex
这正是我所需要的。唯一的缺点是它将我与Windows窗体程序集绑定

        MaskedTextBox mtb = new MaskedTextBox("FR999_999999");
        mtb.Text = "123456789";
        return mtb.Text;

很好地解释了这个问题。我不太确定他想要什么。请注意键入:
max.Length
在您的while循环中。破折号是最有可能的情况,但不是唯一的可能性。请参阅上面编辑的问题,其中现在包括一个带有两个前导字符和下划线的掩码示例。