我有一个字符串,其中包含一些消息,在其中,有一个电话号码,我想获取该特定部分。
我尝试使用字符串拆分,但无济于事。
Contato via web site
Segue abaixo os dados preenchidos pelo visitante:
Nome: Nome Qualquer
E-mail: exemplod@exemplo.com
Telefone: (99) 99999-9999
Mensagem: Mensagem enviada
我想用某种方式来检索字符串的“ Telefone”部分,最好只检索数字,例如“(99)99999-9999”,或者已经格式化为“ 99999999999”。
答案 0 :(得分:3)
虽然Denis的答案暂时还不错,但数字可能会改变空格,或者数字的格式也可能会改变。因此,我采用的方法是使用正则表达式。我制作了2个正则表达式,其中一个匹配确切的格式编号,另一个可以匹配更多编号,我考虑到它们也可能是国际性的。
特定的正则表达式为:
\([0-9]{2}\)\s[0-9]{5}-[0-9]{4}
更广泛的一个:
\+?(\([0-9]+\))?\s?[0-9\-]+
它的用法是:
Regex reg = new Regex(@"\([0-9]{2}\)\s[0-9]{5}-[0-9]{4}");
var match = reg.Match("yourinput").Value;
答案 1 :(得分:2)
假设您的数据始终采用这种确切格式,则可以尝试执行以下操作:
string s = "Contato via web site Segue abaixo os dados preenchidos pelo visitante: Nome: Nome Qualquer E - mail: exemplod @exemplo.com Telefone: (99) 99999 - 9999 Mensagem: Mensagem enviada";
int start = s.IndexOf("Telefone: ") + 10;
int end = s.IndexOf("Mensagem");
string phonenumber = s.Substring(start, end - start);
这将找到字符串中包含“ Telefone:”的部分,然后从中删除数字。您还可以在start
答案 2 :(得分:-2)
我认为最好的方法是使用Regex。因此,如果文本中唯一的数字是电话号码,它应该像这样简单。
就像:
string regex = @"/[0-9]/gm";
MatchCollection matchColl = Regex.Matches(YourText, regex);
然后MatchCollection
将所有数字循环遍历,以检查每个值。