簡體   English   中英

c#只從包含數字和單詞的字符串列表中獲取數字

[英]c# Get only numbers from list of strings which contain numbers and words

我有一個字符串列表 (word--number) ex (burger 5$)。 我只需要從列表中的每個字符串中提取數字並創建新的 int 列表。

有幾種方法可以做到這一點,例如 Regex 和 Linq。

對於短字符串,您可以使用 Linq,例如:

public static void Main()
{
    var myStringValue = "burger 5$";

    var numbersArray = myStringValue.ToArray().Where(x => char.IsDigit(x));

    foreach (var number in numbersArray)
    {
        Console.WriteLine(numbersArray);
    }
}

使用linqRegex

List<string> list = new List<string>(){"burger 5$","ab12c","12sc34","sd3d5"};
Regex nonDigits = new Regex(@"[^\d]");   
List<string> list2 = list.Select(l => nonDigits.Replace(l, "")).ToList();

如果您查看Regex.Split, numbers文章。 你會在里面找到答案。 修改后的代碼可能看起來像

var source = new List<string> {
    "burger 5$",
    "pizza 6$",
    "roll 1$ and salami 2$"
};

var result = new List<int>();

foreach (var input in source)
{
    var numbers = Regex.Split(input, @"\D+");
    foreach (string number in numbers)
    {
        if (Int32.TryParse(number, out int value))
        {
            result.Add(value);
        }
    }
}

希望能幫助到你。 彼得

您可以查看並使用此代碼解決問題:

  List<string> word_number = new List<string>();
            List<int> number = new List<int>();

            word_number.Add("burger 5$");
            word_number.Add("hamburger 6$");
            word_number.Add("burger 12$");

            foreach (var item in word_number)
            {
                string[] parts = item.Split(' ');

                string[] string_number = parts[1].Split('$');

                number.Add(Convert.ToInt16(string_number[0]));
                Console.WriteLine(string_number[0]);
            }

暫無
暫無

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

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