簡體   English   中英

c#在字符串中增加數字

[英]c# Increment number within a string

我需要打印從 001 到 100 的所有電子郵件。例如test+001@gmail.com直到test+100@gmail.com我正在嘗試使用正則表達式,我將需要增加 1 的數字分開,但我不這樣做不知道如何構造 for 循環。

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

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

你可以在沒有正則表達式的情況下做到這一點,通過在循環中迭代從1100數字,並使用字符串插值向電子郵件模板添加一個數字

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

這里的重點是帶有前導 0 的{i:000}格式

這是解決方案:

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

我有點喜歡只使用Enumerable.Range的簡單性:

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

在這里擺弄

你為什么不這樣做呢?

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

Insted 從字符串中增加數字,您每次只需重新創建字符串。

這處理前導零

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 的值。

使用 Linq。

var x=Enumerable.Range(1, 100).Select(x => "test"+x.ToString("000")+"@gmail.com");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM