首页 > 解决方案 > 无法读取由空格数和几个换行符分隔的字符串列表

问题描述

我想读取由多个空格和几行分隔的字符串列表。我正在尝试阅读此输入:

@" 1427  0   

   876652098643267843 
5276538

   "

我用这个:

List<string> input = Console
  .ReadLine()
  .Split(new string[] { " ", Environment.NewLine + Environment.NewLine}, 
         StringSplitOptions.RemoveEmptyEntries)
  .ToList();

使用此命令,我收到带有2 个字符串的列表: 14270. 下一个没有出现。在0和下一个之间是一些空格和一个空行。

无法确定问题是从控制台读取还是 .Split函数不完全有效。

我只是想:

input[0] = 1427;
input[1] = 0;

... 谢谢 :)

标签: c#split

解决方案


您可以尝试使用正则表达式来处理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();

推荐阅读