尝试搜索文本文件并显示输出。控制台应用

时间:2016-02-22 16:50:56

标签: c#

开发一个程序来解析数据文件,并根据提供的命令行参数将输出呈现给用户。 将向申请人提供包含患者医疗报告的文本文件(medicalreports.txt)。您的应用程序应读取此文件,并解析每个记录的各个字段并将其存储在内存中。 程序还应接受以下命令行参数,并根据提供的参数打印保存的数据。

参数必需值解释 -file是输入文件的位置 -sort否应将所有已保存的数据打印到控制台,并按提供的字段名称升序排序。因此,如果参数为-sort PatientID,则打印所有数据,按PatientID字段排序。 -search否打印包含提供的搜索值的所有报告。因此,如果提供了-search Smith,则输出是在任何字段中具有单词Smith的所有报告。

请注意,只有第一个参数是必需的。如果评估者不提供任何其他参数,则程序必须仅按原始顺序打印数据。打印格式取决于申请人,但应该易于阅读。

import {Component, OnInit } from 'angular2/core';
import {Contact} from './contact';
import {ContactFormComponent} from './contact-form.component';

@Component({
    selector: 'contact-create',
    template: `
      <h2>Nuevo contacto</h2>

      <div class="panel panel-default">
        <div class="panel-body">

          <contact-form [contact]="contact" (formSubmitted)="saveContact($event)"></contact-form>

        </div>
      </div>
    `,
    directives: [ContactFormComponent]
})
export class ContactCreateComponent {

  contact: Contact = new Contact('');

  constructor(
      private router: Router,
      private contactService: ContactService) { }

  saveContact(args) {
    console.log(args);
  }
}

只是寻找让我朝着正确方向前进的东西。

文件看起来像这样

import {Component, EventEmitter} from 'angular2/core';
import {NgForm}    from 'angular2/common';
import {Contact}   from './contact';

@Component({
  selector: 'contact-form',
  inputs: ['contact'],
  outputs: ['formSubmitted'],
  templateUrl: 'app/contacts/contact-form.component.html',
})
export class ContactFormComponent {

  contact: Contact;
  formSubmitted: EventEmitter<any> = new EventEmitter();

  onSubmit(contact) { this.formSubmitted.next(contact); }
}

由于

2 个答案:

答案 0 :(得分:0)

要读取用户传递的参数,请更改您的Main函数,如下所示:

static void Main(string[] args)
{
    //access the array
}

数组将包含传入的参数。例如,如果用户使用:App.exe -id 2 -type 3启动了您的应用,则数组内容将为:["-id","2","-type","3"]

答案 1 :(得分:0)

我建议先将整个文件读入DataTable。然后,您可以使用标准SQL对其执行排序和查询,就像它是数据库一样。请确保在应用程序关闭时将其从内存中删除。

以下是如何从文本文件中将其加载到DataTable中的示例:

string txt = File.ReadAllText("medicalreports.txt");

//Separate records
string[] separator = { "===================END OF RESULT===================" };
string[] arrRecords = txt.Split(separator, StringSplitOptions.RemoveEmptyEntries);

DataTable table = new DataTable();

// Loop through records
for (int i = 0; i < arrRecords.Length; i++)
{
    string[] lines = arrRecords[i].Split('\n');

    DataRow row = new DataRow();
    // Loop through fields
    for (int j = 0; j < lines.Length; j++)
    {
        string[] keyValue = lines[j].Split(':');

        string field = keyValue[0].Trim();
        string value = keyValue[1].Trim();

        // Since not all records contain all columns, make sure this column exists. If not add it.
        if (!table.Columns.Contains(field))
        {
            table.Columns.Add(field);
        }

        row[field] = value;
    }
    table.Rows.Add(row);
}