开发一个程序来解析数据文件,并根据提供的命令行参数将输出呈现给用户。 将向申请人提供包含患者医疗报告的文本文件(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); }
}
由于
答案 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);
}