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

问题描述 投票:0回答:2

所以,我一直在学习C#,我需要删除“:”字符后的所有内容。

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

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

名称:名字

名2:lastname2

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

编辑:

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

example.com/q=(name without“:”)

编辑2:

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

输出为;

System.String[]
c# text split streamreader
2个回答
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[]它不会自动给你所有的值,你必须自己写。

因此,如果你的line变量是:"name:Steve",split变量将有两个索引,如下所示:

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

我做了一个小提琴here演示。


1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.