从字符串中提取数字并放入数组中

3

好的,我发现这是用于从字符串中删除所有非数字“垃圾”的内容

TextIN = " 0 . 1 ,2 ; 3 4 -5 6 ,7 ,8; 9 "

string justNumbers = new String(textIN.Where(Char.IsDigit).ToArray());

= "0123456789"

这个代码可以去除字符串中的所有“垃圾”,只留下数字,但是我该如何修改它, 以便至少有一个分隔符,例如“,”在我的数字之间,像“0,1,2,3,4,5,6,7,8,9”,因为我需要对这些数字进行分隔,以便将它们放入int数组中并处理它们,并且它们不总是单个数字,我可能有105,85692等等。 请帮帮我?!


有负数,isDigit 不正确,它每次只能处理一个数字,感谢您的纠正 @jCoder - TyGerX
4个回答

6
您也可以像这样将其转换为数字值:
int[] numbers = Regex.Matches(textIN, "(-?[0-9]+)").OfType<Match>().Select(m => int.Parse(m.Value)).ToArray();

@L.B:同意,但也可能存在负值。


可能会有实数、复数,形式为 10E3 等等。 :) - L.B
当然!这取决于OP的意图,要支持哪种类型的数字(现在我看到没有负数请求,所以我部分错误)。 - jCoder
好的,谢谢你为我完成了所有的想法 :D 还有负数和各种数字,你为我解决了未知的谜团。 - TyGerX

1
string test = string.Join(",", textIN.Where(Char.IsDigit));

它适用于多位数吗?我不确定,所以我在问。 - sarwar026

1

对于n位数字,您可以使用正则表达式。

string s = String.Join(",",
                  Regex.Matches(textIN,@"\d+").Cast<Match>().Select(m=>m.Value));

好的,这适用于n个数字,你纠正了我的isDigit错误 :) 谢谢 - TyGerX

0
string justNumbers = new String(textIN.Where(Char.IsDigit).ToArray()); = "0123456789"
string[] words = justNumbers.Split(',');

将字符串按逗号分隔成数字数组。


我认为这甚至不正确,但无论如何我不需要分割0、1、2、3、...,我可能需要0、300、450、34、1090、3、...。 - TyGerX
那段代码假设你输入了像这样的字符串 "0,1,300,53,45",它通过在每个逗号处拆分字符串来创建一个数组。 - scarecrow198504

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接