为了账号安全,请及时绑定邮箱和手机立即绑定

c# 仅从包含数字和单词的字符串列表中获取数字

c# 仅从包含数字和单词的字符串列表中获取数字

C#
Helenr 2022-10-23 10:21:42
我有一个字符串列表(单词--数字)前(汉堡 5 美元)。我只需要从列表中的每个字符串中提取数字并创建新的 int 列表。
查看完整描述

4 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

有几种方法可以做到这一点,例如 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);

    }

}


查看完整回答
反对 回复 2022-10-23
?
catspeake

TA贡献1111条经验 获得超0个赞

如果您查看Regex.Split,数字文章。你会在那里找到答案。修改后的代码可能看起来像

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);

        }

    }

}

希望能帮助到你。彼得


查看完整回答
反对 回复 2022-10-23
?
富国沪深

TA贡献1790条经验 获得超9个赞

您可以查看并使用此代码解决问题:


  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]);

            }


查看完整回答
反对 回复 2022-10-23
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

使用linq和Regex:


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();


查看完整回答
反对 回复 2022-10-23
  • 4 回答
  • 0 关注
  • 146 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信