【问题标题】:How to add a splitted string to a list?如何将拆分的字符串添加到列表中?
【发布时间】:2016-01-26 17:55:56
【问题描述】:

所以我有一个 txt 文件,其中包含我在代码顶部提供的名称。问题是如果它们包含''(空格),我想将这些行分成单独的行

John
James Peter
Mary Bob
Thomas
Michael

我希望它是这样的:

John
James
Peter
Mary
Bob
Thomas
Michael

.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace ConsoleApplication21
{
    class Program
    {
        static void Main(string[] args)
        {


            #region test2

            StreamReader Fixed = new StreamReader("SSfile.txt");
            List<string> FixedList = new List<string>();
            List<string> FixedList2 = new List<string>();
            FixedList2.ToArray();
            string ReadFixed = Fixed.ReadLine();
            while (ReadFixed != null)
            {
                FixedList.Add(ReadFixed);
                ReadFixed = Fixed.ReadLine();

            }
            Fixed.Close();
            for (int i = 0; i < FixedList.Count(); i++)
            {
                FixedList[i].Split(' ');


            }
            Console.WriteLine(FixedList.ToString());

            Console.ReadKey();

            #endregion


            Console.ReadKey();
        }
    }
}

那我该怎么办??

【问题讨论】:

  • 看看String.Split()方法。
  • 已经做了:for (int i = 0; i
  • 如果您打印FixedList.ToString(),您将打印对列表的引用。如果您打印FixedList[i],您将在列表中打印一个字符串。
  • 仅仅调用FixedList[i].Split(' ') 不会做任何事情——Split 方法返回一个字符串数组。它不会修改原始字符串。
  • @Mage Xy 那么如果我想以这种方式拆分这些名称并将其保存到新列表中,我该怎么办?我试过了,但这是一种浪费……:string[] arrays; for (int i = 0; i

标签: c# arrays list split


【解决方案1】:

使用 LINQ 的强大功能:

String.Split 将根据给定的分隔符将字符串拆分为子字符串数组。

SelectMany 将“展平”一个集合。这意味着您提供一种方法,将一个项目转换为多个项目(例如,一个字符串转换为一个字符串数组),并且 SelectMany 将从它形成一个可枚举的对象。

namespace ConsoleApplication21
{
    class Program
    {
        static void Main(string[] args)
        {
           var names = File.ReadLines("SSfile.txt")
                           .SelectMany(line => line.Split(' '));

           foreach(var name in names)
           {
              Console.WriteLine(name);
           }
         }
     }
}

【讨论】:

  • 解决方案有效,但请解释它是如何工作的,因为 OP(或其他得出此答案的人)可能不了解 LINQ。
  • 哦,是的,我将不胜感激!
  • @Chase 添加了解释。
【解决方案2】:

分割每一行,例如:

string.Join("\n","James Peter".Split(' '));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-16
    • 2018-01-15
    • 2018-07-15
    • 1970-01-01
    • 2022-06-12
    • 1970-01-01
    • 2015-11-22
    • 2021-12-18
    相关资源
    最近更新 更多