我正在从表中读取字符串ID值。当用户输入ID时,使用用户定义的输入掩码完成,因此掩码可能类似于000-00-0000
,##-######
,AA-9999999
等。掩码因用户而异,因此必须在运行时进行评估。
鉴于表中只存储了字母数字文本,应用该掩码生成新字符串的最佳方法是什么?
例如:
表值=“123456789”
如果用户定义了000-00-0000
的掩码,我想获得字符串123-45-6789
。
如果用户定义了AA-9999999
的掩码,我想获得字符串12-3456789
。
如果用户定义了FR999_999999
的掩码,我想获得字符串FR123_456789
。
答案 0 :(得分: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();
}
答案 1 :(得分:0)
这正是我所需要的。唯一的缺点是它将我与Windows Forms程序集联系在一起。
MaskedTextBox mtb = new MaskedTextBox("FR999_999999");
mtb.Text = "123456789";
return mtb.Text;