我尝试将数据绑定标签值格式化为电话号码,并在前3个数字的前面加上括号。
如果我手动输入Regex的值进行格式化,则会正确显示。如果我使用变量,我将不得不随着查看的每条记录的数字而改变,该值不会被格式化。
例如:
string pattern = @"(\d{3})(\d{4})(\d{4})";
string replace = "($1) $2 $3";
Regex rgx = new Regex(pattern);
string result = rgx.Replace("11122223333", replace);
lblTelephone.Text = result;
将在lblTelephone中显示(111)2222 3333,但如果我用变量值替换输入字符串,则不会进行格式化。
//Strip any spaces from the number, orignal number is 11122 223333 in the database
string phone = lblTelephone.Text.Replace(" ", string.Empty);
string result = rgx.Replace(phone, replace);
任何想法都非常感激。
答案 0 :(得分:0)
此代码工作正常,因此您的问题在其他地方
(我的意思是你不是在使用变量)。
可能phone
的价值不是你想象的那样。
static void Main(string[] args)
{
string phone = "11122223333";
string pattern = @"(\d{3})(\d{4})(\d{4})";
string replace = "($1) $2 $3";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(phone, replace);
Console.WriteLine(result);
}
编辑1:
你是说你第二次使用(111)2222 3333作为输入? 如果是这样,你的问题是111左右的括号的存在。 在移除空格时也将它们移除。
编辑2:
很可能在DB中你看到值11122 223333但实际上你有一些不可见的char(作为后缀或前缀)或类似的东西。检查DB中的字符串长度和确切的字符串值。