How can i remove any strings from an array and have only integers instead
我如何从数组中删除任何字符串,而只有整数
string[] result = col["uncheckedFoods"].Split(',');
I have
[0] = on; // remove this string
[1] = 22;
[2] = 23;
[3] = off; // remove this string
[4] = 24;
I want
[0] = 22;
[1] = 23;
[2] = 24;
I tried
var commaSepratedID = string.Join(",", result);
var data = Regex.Replace(commaSepratedID, "[^,0-9]+", string.Empty);
But there is a comma before first element, is there any better way to remove strings ?
但是在第一个元素之前有一个逗号,有没有更好的方法来删除字符串?
3 个解决方案
#1
10
This selects all strings which can be parsed as int
这将选择可以解析为int的所有字符串
string[] result = new string[5];
result[0] = "on"; // remove this string
result[1] = "22";
result[2] = "23";
result[3] = "off"; // remove this string
result[4] = "24";
int temp;
result = result.Where(x => int.TryParse(x, out temp)).ToArray();
#2
0
To also support double
I would do something like this:
为了支持双倍,我会做这样的事情:
public static bool IsNumeric(string input, NumberStyles numberStyle)
{
double temp;
return Double.TryParse(input, numberStyle, CultureInfo.CurrentCulture, out temp);
}
and then
string[] result = new string[] {"abc", "10", "4.1" };
var res = result.Where(b => IsNumeric(b, NumberStyles.Number));
// res contains "10" and "4.1"
#3
0
Try this
dynamic[] result = { "23", "RT", "43", "67", "gf", "43" };
for(int i=1;i<=result.Count();i++)
{
var getvalue = result[i];
int num;
if (int.TryParse(getvalue, out num))
{
Console.Write(num);
Console.ReadLine();
// It's a number!
}
}
#1
10
This selects all strings which can be parsed as int
这将选择可以解析为int的所有字符串
string[] result = new string[5];
result[0] = "on"; // remove this string
result[1] = "22";
result[2] = "23";
result[3] = "off"; // remove this string
result[4] = "24";
int temp;
result = result.Where(x => int.TryParse(x, out temp)).ToArray();
#2
0
To also support double
I would do something like this:
为了支持双倍,我会做这样的事情:
public static bool IsNumeric(string input, NumberStyles numberStyle)
{
double temp;
return Double.TryParse(input, numberStyle, CultureInfo.CurrentCulture, out temp);
}
and then
string[] result = new string[] {"abc", "10", "4.1" };
var res = result.Where(b => IsNumeric(b, NumberStyles.Number));
// res contains "10" and "4.1"
#3
0
Try this
dynamic[] result = { "23", "RT", "43", "67", "gf", "43" };
for(int i=1;i<=result.Count();i++)
{
var getvalue = result[i];
int num;
if (int.TryParse(getvalue, out num))
{
Console.Write(num);
Console.ReadLine();
// It's a number!
}
}