c# - 从字符串末尾提取整数

标签 c# string list

我在List<string>()中有多个ID

List<string> IDList = new List<string>() {
"ID101",     //101
"I2D102",    //102
"103",       //103
"I124D104",  //104
"ID-105",    //105
"-1006" };   //1006


规则:字符串始终以长度为1到n且仅int的id结尾

我需要将它们提取为int值。但是我的解决方案不起作用

List<int> intList = IDList.Select(x => int.Parse(Regex.Match(x, @".*\d*").Value)).ToList();

最佳答案

这是另一种LINQ方法,如果数字始终在末尾且不可能为负值,则该方法有效。跳过无效的字符串:

 List<int> intList = IDList
    .Select(s => s.Reverse().TakeWhile(Char.IsDigit))
    .Where(digits => digits.Any())
    .Select(digits => int.Parse(String.Concat(digits.Reverse())))
    .ToList();


(编辑:类似于Ian's approach

关于c# - 从字符串末尾提取整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37204880/

相关文章:

java - java中的字符串文字与常量文件

Char * 数组混淆

python - 我如何访问这个复杂的 JSON 中的嵌套数据,其中包含另一个 JSON 文档作为字符串之一?

c# - Web 表单中的 ASP.Net 图表适用于本地系统,不适用于 Web 服务器

c# - 如何在 C# 中序列化异常对象?

java - java中检查两个字符串是否相等

javascript - 消失的下拉菜单

c# - 处理用作存储过程参数的列表的最佳方法

c# - Ajax Post 将 null 传递给 Controller

c# - 如何捕获 web api uri 参数绑定(bind)错误?