Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.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_Regex_Phone Number - Fatal编程技术网

C# 从格式化字符串中提取电话号码正则表达式

C# 从格式化字符串中提取电话号码正则表达式,c#,.net,regex,phone-number,C#,.net,Regex,Phone Number,鉴于电话号码均采用此格式: (999) 999-9999 Ext.9999" 我想将所有内容返回到第二个空格,例如: (999) 999-9999 有什么想法吗?不要使用正则表达式。使用然后将前两个元素重新连接在一起。如果字符串是s: string s = "(999) 999-9999 Ext.9999"; string number = s.Split(" Ext")[0]; 如果想要完美匹配,可以使用以下表达式: string s = "(999) 999-9999 Ex

鉴于电话号码均采用此格式:

(999) 999-9999 Ext.9999"
我想将所有内容返回到第二个空格,例如:

(999) 999-9999

有什么想法吗?

不要使用正则表达式。使用然后将前两个元素重新连接在一起。

如果字符串是s:

   string s = "(999) 999-9999 Ext.9999";
   string number = s.Split(" Ext")[0];

如果想要完美匹配,可以使用以下表达式:

string s = "(999) 999-9999 Ext.9999";
Match m = Regex.Match(s, @"(?<nr>\([0-9]{3}\)\s+[0-9]{3}\-[0-9]{4})");
if (m.Groups["nr"].Success)
{
    Console.WriteLine(m.Groups["nr"].Value);
}
string s=“(999)999-9999 Ext.9999”;
Match m=Regex.Match(s,@“(?\([0-9]{3}\)\s+[0-9]{3}-[0-9]{4}”);
如果(m.Groups[“nr”]成功)
{
控制台写入线(m.Groups[“nr”]值);
}

其中
s
包含完整的钉扎。如果真的是“此格式上的所有内容”,那么您可以只使用前14个字符:

string number = s.SubString(0, 14);
或者更灵活、更安全:

var idx = s.IndexOf(" Ext");
//good idea to check if idx == -1
string number = s.SubString(0, idx);
看看这个:

    string s = "(999) 999-9999 Ext.9999";
    string phonenumber1 = Regex.Replace(s, @"(?i)\s*ext\.\d+", "");

为什么要删除你不想要的东西?指定您想要的不是更好吗?@wouther,您认为较短的模式效率低吗?而且不必要的部分比要求的部分少。我对效率没有问题。。。想想看:如果你有一个提取所需部分的模式,你可以在任何长度的文本上重复使用它。因此,对于将来需要在不知道确切输入的情况下编写代码的开发人员来说,它更能证明未来,更干净。他为什么又把那个“分机”拆了?哦,他想要电话号码,不是很清楚吗?这同样适用于这里提出的
.Split
方法。如果是的话,那就太严厉了。我是第一个答案,并提供了与公认答案相同的答案。Sans代码示例。对C#不太熟悉。有效的scenerio'(999)999-9999 ext.9999'即
ext
是小写字母,这有效吗?