Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用c从逗号分隔的文本文件行读取特定字段#_C# - Fatal编程技术网

C# 如何使用c从逗号分隔的文本文件行读取特定字段#

C# 如何使用c从逗号分隔的文本文件行读取特定字段#,c#,C#,我在这里看到很多帖子,但都是关于如何逐行阅读文本文件的。。 但我不想一行一行地读,我想一行一行地读 下面是我的文本文件的示例 已接受,2013/02/22,20:12,ss123,123412341234,失败*某些原因,20500 被拒绝,2013/02/22,20:12,ss123,123412341234,失败*某些原因,20500 输出我想要的文本文件,如: 接受,2013/02/22,20:12,SS123412341234,接受,20500 被拒绝,2013/02/22,20:12,

我在这里看到很多帖子,但都是关于如何逐行阅读文本文件的。。 但我不想一行一行地读,我想一行一行地读

下面是我的文本文件的示例

已接受,2013/02/22,20:12,ss123,123412341234,失败*某些原因,20500
被拒绝,2013/02/22,20:12,ss123,123412341234,失败*某些原因,20500

输出我想要的文本文件,如:

接受,2013/02/22,20:12,SS123412341234,接受,20500

被拒绝,2013/02/22,20:12,ss123,123412341234,出于某种原因,20500

在上面的输出示例中,首先我需要检查行是否包含Accepted,如果它包含Accepted,那么我需要将第8列(失败*某些原因)替换为Accepted,否则我需要在第8列(某些原因)中只写拒绝的原因。。 如果你能解决我的问题,请提前感谢

我想你喜欢下面的代码..任何朋友都可以帮我。。 在这里输入代码

try

{

 System.IO.TextReader ReadFile = new StreamReader("c:\\ATMLOG.txt");

 System.IO.TextWriter writeFile = new StreamWriter("c:\\DeatailReport.txt");

string line = ReadFile.ReadLine()

while(line!=null)
{

if(line.contains("Accepted")
{

string[] strArr = line.Split(',');
strArr[8]="Accepted";//i wanted to replace 8th column of comma separated text file line with Accepted 
TextWrite.writeln(line);
}
else

{

switch(strArr[8])
{
case "some reasson" : //which reason will be mached that should be write on 8th column of comma separated text file

case "some reasson":

; 
;
;



}

            }
            catch (IOException ex)
            {
                MessageBox.Show(ex.ToString());
            }

您可以使用
String.Split()


我甚至都懒得去做劈腿。由于似乎所有内容都是
失败*出于某种原因
,您只需
失败*
即可消失,因此我将执行一次替换:

line = line.Replace("Failed*", "");
为了提高效率,您仍然可以检查是否接受

if (!line.Contains("Accepted"))
{
    line = line.Replace("Failed*", "");
}

下面的代码不起作用:我想用Accepted替换“Failed*Some reason”,但原因总是不同的。这与您在问题中在输出文本下描述的内容并不匹配。您的示例表明您只是希望
失败*
消失。也许,如果您对本答案无法满足的各种预期输出进行更详细的阐述,我将更仔细地了解答案的缺点。实际上,我正在尝试读取自动生成的ATM日志文件,并尝试筛选该日志文件并生成详细报告文本文件。将接受或拒绝支票详细信息。被拒绝的检查有被拒绝的原因,如果匹配,我用来与预定义的原因进行比较,然后我使用在该字段中写入该原因。@user2448680:这并不能清除任何内容,也不能解释两个提交的答案缺少什么。是的,第二个提交的答案是正确的,但它只适用于已接受的答案行,,但是由于被拒绝的原因,我必须检查预定义的原因,这就是问题所在…感谢您的回复:)@user2448680您是否有一些示例代码,我可以复制和粘贴,以便我可以通过调试器运行它?是的,我有一些类型的代码,我将上载..感谢您的回复:)@user2448680那么那一行:
string在哪里状态=strArr[7]吗?之前我想将第8列存储在一个字符串变量中,并将该变量与一些预定义的原因进行比较。。
if (!line.Contains("Accepted"))
{
    line = line.Replace("Failed*", "");
}