c# Номер приращения в строке - PullRequest
0 голосов
/ 20 января 2020

Мне нужно распечатать все электронные письма от 001 до 100. Например, test+001@gmail.com до test+100@gmail.com Я пытаюсь использовать регулярное выражение и разделяю число, которое мне нужно увеличить, на 1, но я не знаю, как состав для л oop.

string email = "test+001@gmail.com";

Regex regex = new Regex(@"\d+");  
var parts = email.Split('@');
string prefix = Regex.Replace(email, @"\d+", "");

Ответы [ 6 ]

3 голосов
/ 20 января 2020

На самом деле вы можете сделать это без регулярных выражений, перебирая числа от 1 до 100 в al oop и используя строковую интерполяцию , чтобы добавить номер в шаблон электронной почты

for (int i = 1; i <= 100; i++)
{
    var email = $"test+{i:000}@gmail.com";
    Console.WriteLine(email);
}

Важным моментом здесь является {i:000} формат с ведущими 0s

1 голос
/ 20 января 2020

Мне нравится простота использования Enumerable.Range:

foreach(int i in Enumerable.Range(1, 100))
{
    Console.WriteLine($"test+{i:000}@gmail.com");
}

Fiddle здесь

1 голос
/ 20 января 2020

Вот решение:

class Program
{
    static void Main(string[] args)
    {
        string email = "test+{0:D3}@gmail.com";
        for (int i = 1; i < 101; i++)
        {
            Console.WriteLine(string.Format(email, i));
        }
    }
}

Вывод:

test+001@gmail.com
test+002@gmail.com
test+003@gmail.com
// etc etc
0 голосов
/ 20 января 2020

Использование Linq.

var x=Enumerable.Range(1, 100).Select(x => "test"+x.ToString("000")+"@gmail.com");
0 голосов
/ 20 января 2020

Обрабатывает ведущие нули

string email = "test+001@gmail.com";

Regex.Replace(email, @"\d{1,3}", (mtch) =>
{
    return (mtch.Success) ? (int.Parse(mtch.Value) + 1).ToString("D3") : string.Empty;

});

Заменить возвращает test+002@gmail.com и другие значения до 999.

0 голосов
/ 20 января 2020

Почему бы вам не сделать это так?

var n = 0;
while(n++ != 100)
{
    Console.WriteLine($"test+{n}@gmail.com");
}

Вместо увеличения числа из строки, вы просто воссоздаете строку каждый раз.

...