簡體   English   中英

將包含整數的字符串解析為List <int>

[英]Parse a string containing integers into a List<int>

我想讓用戶通過以下方式輸入整數:

  • 用逗號分隔的數字:1,3,122,64000,27等

  • 數字范圍:37-2000

  • 上述混合物:55,2,1-10000,65000-65007,2182

如何解析一個字符串,該字符串可能是最終的任何形式的一個字符串?

例如:1-5,6,7-8應該給出一個包含1,2,3,4,5,6,7,8的列表

我對C#很陌生,所以我會非常感謝一些示例代碼。 謝謝。

用逗號分割的String.split將為你提供所需的一切,如果一個組包含 - 再次拆分並且你有兩個范圍值

這有效:

var query =
    from x in text.Split(',')
    let y = x.Split('-')
    let b = int.Parse(y[0].Trim())
    let e = int.Parse(y[y.Length - 1].Trim())
    from n in Enumerable.Range(b, e - b + 1)
    select n;

var result = query.ToList();

我建議添加一些錯誤處理,但如果您的輸入格式正確,則可行。


**編輯**:.NET 2.0版本。

var result = new List<int>();
foreach (var x in text.Split(','))
{
    var y = x.Split('-');
    var b = int.Parse(y[0].Trim());
    var e = int.Parse(y[y.Length - 1].Trim());
    for (var n = b; n <= e; n++)
    {
        result.Add(n);
    }
}

幾乎相同... :-)

基於','對字符串進行標記,然后解析單個數字或范圍的列表。

從內存中,List上有一個Split(..)方法,您可以使用它來獲取令牌。 然后只測試一個' - '的存在(如果它的第一個字符然后是負數,顯然不是一個范圍)。

暫無
暫無

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

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