首页 > 解决方案 > 从字符串中删除非数字字符并将数字作为 int 转换为数组

问题描述

我有一个字符串:"ABD1254AGSHF56984,5845fhfhjekf!54685"我想遍历这个字符串中的每个字符并找到任何非数字字符并删除这些字符,直到下一个数字字符。即从我的字符串中删除所有非数字字符,但这些应该是数字是分开的指标。

输出为整数数组:

1254
56984
5845
54685

这些应该放入一个数组并转换为整数。

我在下面的尝试但这只是将所有数字作为一个而不是根据非数字字符将它们分开:

var input = "ABD1254AGSHF56984,5845fhfhjekf!54685";
var numeric = new String(input.Where(char.IsDigit).ToArray());

//This is the output of my attempt: 125456984584554685

标签: c#string

解决方案


您可以使用正则表达式来拆分您的数字和字母,

string line = "ABD1254AGSHF56984,5845fhfhjekf!54685";

// This splits up big string into a collection of strings until anything other than a character is seen.
var words = Regex.Matches(line, @"[a-zA-Z]+"); 

// This gives you a collection of numbers... 
var numbers = Regex.Matches(line, @"[0-9]+");
foreach (Match number in numbers)
{
    Console.WriteLine(number.Value);
}

// prints
1254
56984
5845
54685

实施前应阅读正则表达式文档以便更好地理解。


推荐阅读