Regex получить один, связанный номер - PullRequest
0 голосов
/ 31 августа 2018

Я пытаюсь отфильтровать адресное число входной строки, но проблема в том, что мой код все же приводит к нежелательным результатам, когда появляется строка с несколькими числами.

Есть ли возможность сообщить Regex, что нужно отфильтровать массив или что-то в этом роде, чтобы узнать, было ли в исходной строке более одного числа?

String theNumbers = String.Join(String.Empty, Regex.Matches(inputString, @"\d+").OfType<Match>().Select(m => m.Value));

Я тоже попробовал это по-другому, но Regex.Split генерирует пустые строки в массиве, и просто отфильтровывать их мне кажется немного хакерским.

String[] extractedNumbersArray = Regex.Split(inputString, @"\D+");

1 Ответ

0 голосов
/ 31 августа 2018

Надеюсь, это поможет ( онлайн ):

using System;
using System.Text.RegularExpressions;
using System.Linq;

public class Program
{
    public static void Main()
    {
        var inputString = "1 2 3";

        var values = Regex
            .Matches(inputString, @"(?<nr>\d+)")
            .OfType<Match>()
            .Select(m => m.Groups["nr"].Value)
            .ToArray();

        Console.WriteLine("Multipe numbers: " + (values.Length > 1 ? "yep" : "nope"));
        foreach (var v in values) 
        {
            Console.WriteLine(v);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...