在特定角色之前使用所有内容

时间:2018-02-27 18:31:07

标签: c# text split streamreader

所以,我一直在学习C#,我需要删除所有内容 “:”性格。

我用StreamReader读取文本文件,但后来我不能使用Split函数,然后我尝试使用int函数导入它,但后来再次我不能使用Split函数?

我想要做的是导入一个写得像;

的文本文件

名:名字

NAME2:lastname2

因此它只显示名称和名称2。 我已经搜索了几天,但我似乎无法弄明白! 我不知道我做错了什么以及如何在不使用StreamReader或其他任何内容的情况下导入文本文件。

编辑:

我正在尝试将某些内容发布到类似的网站上

example.com/q=(名称不带“:”)

编辑2:

StreamReader list = new StreamReader(@"list.txt");
string reader = list.ReadToEnd();
string[] split = reader.Split(":".ToCharArray());
Console.WriteLine(split);

将输出作为;

System.String[]

2 个答案:

答案 0 :(得分:3)

你在这里遇到了一些问题。首先,使用File.ReadLines()代替StreamReader,它更简单,更容易:

IEnumerable<string> lines = File.ReadLines("path/to/file");

接下来,需要迭代你的lines变量,这样你就可以到达集合的每一行:

foreach (string line in lines)
{
    //TODO: write split logic here
}

然后你必须分开':'字符的每一行:

string[] split = line.Split(":");

您的split变量是一个字符串数组(即string[]),这意味着如果要查看其值,则必须访问该数组的特定索引。这是您的第二个问题,如果您将split传递给Console.WriteLine(),它只会在您传递的对象上调用.ToString(),并使用string[]获胜t自动给你所有的价值,你必须自己写。

因此,如果您的line变量为:"name:Steve",则split变量将包含两个索引,如下所示:

//split[0] = "name"
//split[1] = "Steve"

我制作了一个演示here的小提琴。

答案 1 :(得分:1)

我的文件大小很小,你的名字:一行中的姓氏使用:

var lines = File.ReadAllLines("filaPath");
foreach (var line in lines)
{
     var array = line.Split(':');
     if (array.Length > 0)
     {
         var name = array[0];
      }
}

如果姓名:姓氏在新行中不是告诉我它是如何分开的