在特定字符之前使用所有内容

Use everything before a specific character

所以,我一直在学习 C#,我需要在 ":" 字符.

我用 StreamReader 读取文本文件,但是我不能使用 Split 函数,然后我尝试使用 int 函数导入它,但是我又不能使用拆分功能?

我想要这样做的是导入一个文本文件,其编写方式如下;

姓名:姓氏

姓名 2:姓氏 2

因此它只显示姓名和姓名 2。 我一直在搜索这个几天,但我似乎无法弄清楚! 我不知道我做错了什么以及如何在不使用 StreamReader 或其他任何东西的情况下导入文本文件。

编辑:

我正在尝试 post 一些类似的网站;

示例。com/q=(不带“:”的名称)

编辑 2:

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

输出为;

System.String[]

我的文件很小,你的 name:lastname 在一行中使用:

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

如果 name:lastname 不在新行中,请告诉我它是如何分隔的

您遇到了一些问题。首先,使用 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[]),这意味着你必须访问数组的特定 index 如果你想看看它的价值。这是你的第二个问题,如果你在后台将 split 传递给 Console.WriteLine(),它只会调用你传递给它的对象上的 .ToString(),并且使用 string[] 它不会'它不会自动给你所有的值,你必须自己写。

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

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

我做了一个fiddlehere来演示。