C# 如何转换c行中的值
输入字符串:12345 我想成为:C# 如何转换c行中的值,c#,string,C#,String,输入字符串:12345 我想成为: string line = "1 2 3 4 5"; list<int>list = new list<int>(); list.Add(1); list.Add(2); list.Add(3); list.Add(4); list.Add(5); 尝试使用lambda表达式和字符串拆分 string line = "1 2 3 4 5"; List<int> li
string line = "1 2 3 4 5";
list<int>list = new list<int>();
list.Add(1);
list.Add(2);
list.Add(3);
list.Add(4);
list.Add(5);
尝试使用lambda表达式和字符串拆分
string line = "1 2 3 4 5";
List<int> list= line.Split(" ").Where(x => x.Trim().length > 0).Select(x => Convert.ToInt32(x)).ToList();
您可以使用正则表达式来标识文本中出现的整数。这是一个例子 这可能会被证明更可靠,这取决于您的场景,例如,您可以在其中键入任意单词/文本,但它仍然可以找到所有数字 执行此操作的C代码如下所示:
List<int> FindIntegers(string input)
{
Regex regex = new Regex(@"(\d+)");
List<int> result = new List<int>();
foreach (Match match in regex.Matches(input))
{
result.Add(int.Parse(match.Value));
}
return result;
}
可以使用StringSplitOptions.RemoveEmptyEntries在空格上拆分行,以删除空匹配项
因此,结果将只有数字,然后您可以转换为int。您可以将多个空格转换为单个空格,然后在“”上拆分: 或者通过以下正则表达式之一直接选择所有数字:
\d{1} --> If the numbers will always consist of a single digit.
\d+ --> If the numbers might contain more than one digit.
像这样:
var result = new List<int>();
foreach (Match i in Regex.Matches(line, @"\d{1}")) // Or the other Regex...
{
result.Add(int.Parse(i.Value));
}
您可以将Split方法与StringSplitOptions重载一起使用:
string line = "1 2 3 4 5";
char[] delim = {' '};
var list = line.Split(delim, StringSplitOptions.RemoveEmptyEntries)
.Select(i => Convert.ToInt32(i)).ToList();
RevEvCETION条目将跳过空白条目,您的输出将是:
List<Int32> (5 items)
1
2
3
4
5
有关更多信息,请参阅。空格背后的逻辑是什么?这不会为每个试图转换为整数的空字符串引发异常吗?您不需要修剪,只需使用RemoveEmptyEntries选项Super answer分割即可。谁投了反对票!?为什么?不是我的否决票,而是String.Split不能这样使用。。。。它甚至没有编译,而且在修复了调用@bas之后,它是正确的。这将对未从拆分中删除的空字符串引发异常。@SQLPolice感谢您的意见。在我看来,在发布答案之前最好先验证答案,因为这会让提问者走上错误的轨道,特别是当其他人随机开始投票时。new char[“”]创建一个32元素的数组,其中包含零个字符。这根本不起作用。@很重要,因为只有这样反斜杠才是字面意义上的。顺便说一句,我个人觉得正则表达式通常太难读了。但从技术上来说还可以!投票给一个好的解决方案!我的输出来自使用list.Dump的LINQPad。
string line = "1 2 3 4 5";
char[] delim = {' '};
var list = line.Split(delim, StringSplitOptions.RemoveEmptyEntries)
.Select(i => Convert.ToInt32(i)).ToList();
List<Int32> (5 items)
1
2
3
4
5