【问题标题】:Reading file in C# based on new line基于换行符在C#中读取文件
【发布时间】:2014-03-24 13:53:05
【问题描述】:

我在 C# 中有一个文件,其中每个关键字都出现在新行上

1234-hello I am here
121-Where are you

我想读取文件并将1234-Hello121-Where 写入另一个文件,我在互联网上找到了很多基于逗号分隔的代码,但找不到基于新行提取值的代码.

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

【问题讨论】:

  • 您能否向我们展示您迄今为止所做的努力?
  • string.SplitFile.ReadAllLines 应该足够了。你有没有尝试过什么,你能告诉我们为什么没有奏效吗?
  • 您是说 CSV 中的每一列都用换行符分隔吗?如果是这种情况,您如何确定多条记录之间的差异?
  • @user1765876 最终输出应该是什么?你想写1234-Hello121-Where,还是你也想把它们分开'-' 分开写?
  • 看看msdn.microsoft.com/en-us/library/…的StreamReader.ReadLine方法

标签: c# .net csv file-io console-application


【解决方案1】:

你可以用这个:

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);

您可能想要添加一些错误处理

  • 检查是否返回任何行
  • 检查 tokens.Length >= 2

【讨论】:

  • 如果有类似 123-asdasd )dfd 的东西
  • @user1765876 有什么问题?那么文本将只是“asdasd )dfd”。
  • 这个答案不完整且错误。 OP 希望在第一个空白之前获取内容,而您没有这样做。
  • 对不起,我忘记了那部分。我更新了我的答案。
  • @user1765876 是的,我想我在//... 的地方便宜了;-) 我更新了我的答案以修改当前行。
【解决方案2】:

首先读取所有行,Split每一行被white-space,获取第一部分并将内容写入新文件:

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

File.WriteAllLines("otherPath", lines);

此代码应产生如下输出:

1234-Hello
121-Where

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多