Я хочу получить определенную часть огромной строки - PullRequest
2 голосов
/ 12 июня 2019

У меня есть строка с некоторым сообщением, внутри которой есть номер телефона, я хочу получить эту конкретную часть.

Я пытался использовать строку Split, но безрезультатно.


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



Я хочу использовать каким-либо образом для извлечения части строки «Телефон», желательно только цифры, например «(99) 99999-9999», или уже отформатирован как «99999999999».

Ответы [ 3 ]

3 голосов
/ 12 июня 2019

Хотя ответ Дениса кажется нормальным, на данный момент это число может изменить пробелы или, возможно, формат номера также может измениться.Таким образом, подход, который я бы выбрал, использует регулярные выражения.Я сделал 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;
2 голосов
/ 12 июня 2019

Предполагая, что ваши данные всегда имеют именно такой формат, вы можете попробовать что-то вроде этого:

        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

0 голосов
/ 12 июня 2019

Я думаю, что лучший способ - использовать Regex.Так что должно быть что-то простое, как это, если единственными цифрами в вашем тексте являются цифры для телефона.

Это будет выглядеть так:

string regex = @"/[0-9]/gm";
MatchCollection matchColl = Regex.Matches(YourText, regex);

Тогда MatchCollection получит все цифры, просто зацикливая его, чтобы проверить каждое значение, если хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...