我想获取巨大字符串的特定部分

时间:2019-06-12 12:54:25

标签: c# unity3d

我有一个字符串,其中包含一些消息,在其中,有一个电话号码,我想获取该特定部分。

我尝试使用字符串拆分,但无济于事。


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”。

3 个答案:

答案 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将所有数字循环遍历,以检查每个值。