基于新行的C#文件读取

基于新行的C#文件读取,c#,.net,csv,file-io,console-application,C#,.net,Csv,File Io,Console Application,我有一个C#格式的文件,每行都有这样的关键字 1234-hello I am here 121-Where are you 我想阅读该文件并将1234 Hello121 Where写入另一个文件,我在互联网上发现了许多基于逗号分隔的代码,但找不到基于新行提取值的代码 -将我要提取的数字和关键字分开,如1234 hello首先读取所有行,将每行按空格拆分,获取第一部分并将内容写入新文件: var lines = File.ReadLines("path").Select(x => x.Sp

我有一个C#格式的文件,每行都有这样的关键字

1234-hello I am here
121-Where are you
我想阅读该文件并将
1234 Hello
121 Where
写入另一个文件,我在互联网上发现了许多基于逗号分隔的代码,但找不到基于新行提取值的代码


-
将我要提取的数字和关键字分开,如
1234 hello

首先读取所有行,
将每行按空格拆分,获取第一部分并将内容写入新文件:

var lines = File.ReadLines("path").Select(x => x.Split().First());

File.WriteAllLines("otherPath", lines);
此代码应生成如下输出:

1234-Hello
121-Where
您可以使用以下选项:

string[] lines = File.ReadAllLines(path);
for(int i = 0; i < lines.Length; i++)
{
    string line = lines[i];
    string[] tokens = line.Split(new char[]{'-', ' '});
    int number = int.Parse(tokens[0]);
    string text = tokens[1];
    lines[i] = number + "-" + text;
}

File.WriteAllLines(path2, lines);
string[]line=File.ReadAllLines(路径);
对于(int i=0;i
您可能需要添加一些错误处理

  • 检查是否返回了任何行
  • 检查令牌的长度是否大于等于2
  • 等等

thusfar,你能告诉我们你的努力吗?
string.Split
File.ReadAllLines
应该足够了。你试过什么了吗?你能告诉我们为什么不起作用吗?你是说CSV中的每一列都用新行分隔吗?如果是这种情况,如何确定多个记录之间的差异?@user1765876最终输出应该是什么?你想写
1234 Hello
121 Where
,还是想把它们按
'-'
分开写?看看StreamReader.ReadLine方法,如果有类似123的asdasd怎么办)dfd@user1765876有什么问题吗?文本将只是“asdasd)dfd”。这个答案是不完整和错误的。OP希望在第一个空白之前获得内容,但你们没有这样做。对不起,伙计们,我忘了那个部分。我更新了我的答案。@user1765876是的,我想我在我的
/…
;-)的地方省钱了我更新了答案,修改了当前行。