c# - 无法读取由空格数和几个换行符分隔的字符串列表
问题描述
我想读取由多个空格和几行分隔的字符串列表。我正在尝试阅读此输入:
@" 1427 0
876652098643267843
5276538
"
我用这个:
List<string> input = Console
.ReadLine()
.Split(new string[] { " ", Environment.NewLine + Environment.NewLine},
StringSplitOptions.RemoveEmptyEntries)
.ToList();
使用此命令,我收到带有2 个字符串的列表:
1427
和0
. 下一个没有出现。在0
和下一个之间是一些空格和一个空行。
无法确定问题是从控制台读取还是
.Split
函数不完全有效。
我只是想:
input[0] = 1427;
input[1] = 0;
... 谢谢 :)
解决方案
您可以尝试使用正则表达式来处理Match
所有非空白块:
using System.Linq;
using System.Text.RegularExpressions;
...
string source = @" 1427 0
876652098643267843 5276538
";
List<input> input = Regex
.Matches(source, @"\S+")
.Cast<Match>()
.Select(match => match.Value)
.ToList();
我们来看一下:
Console.Write(string.Join(Environment.NewLine, input
.Select((v, i) => $"{nameof(input)}[{i}] = {v};")));
输出:
input[0] = 1427;
input[1] = 0;
input[2] = 876652098643267843;
input[3] = 5276538;
另一种可能性是Regex.Split
:
List<string> input = Regex
.Split(source, @"\s+")
.Where(item => !string.IsNullOrEmpty(item))
.ToList();
推荐阅读
- visual-studio - 以管理员身份运行时,Ctrl-C 在 Visual Studio 2019 中不起作用
- c - Char 和 Int 打印两个不同的值
- azure - 如何将特定大小的文件从一个 blob 容器复制到另一个 blob 容器?
- python - 如何将 GridFS 中的图片显示到 Web 浏览器?
- java - 在 RabbitMQ 中按 id 对消息进行分组或批处理
- r - 如何在 r 中运行回归之前标准化 r 中的数据?
- c# - 获取代理类中泛型方法的名称
- snowflake-cloud-data-platform - 授予雪花任务监视器
- java - GWT 从 2.3 升级到 2.8.1
- python - 我如何解决深度学习的pytorch预测问题