c# - 关于文件读取和比较的问题
问题描述
首先我有一个看起来像这样的文件:
//Manager Ids
ManagerName: FirstName_LastName
ManagerLoginId: 12345
还有一个输入了五位代码(例如 12345)的文本框。当按下 Enter 键时,它被分配给一个名为:“EnteredEmployeeId”的字符串,然后我需要在上面的整个文件中搜索“EnteredEmployeeId”,如果它匹配,那么它将打开另一个页面,如果它没有找到该号码然后显示一条消息(告诉您没有找到员工 ID)。
所以基本上我试图打开一个文件搜索整个文档的 Id 然后返回 true 或 false 以允许它也显示错误或打开一个新页面,并将 EnteredEmployeeId 重置为空。
到目前为止我的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Rent_a_Car
{
public partial class Employee_Login_Page : Form
{
public Employee_Login_Page()
{
InitializeComponent();
}
string ManagersPath = @"C:\Users\Name\Visual Studios Project Custom Files\Rent A Car Employee Id's\Managers\Manager_Ids.txt"; //Path To Manager Logins
string EnteredEmployeeId;
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void Employee_Id_TextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && //Checks Characters entered are Numbers Only and allows them
(e.KeyChar != '0'))
{
e.Handled = true;
}
else if (e.KeyChar == (char)13) //Checks if The "Enter" Key is pressed
{
EnteredEmployeeId = Employee_Id_TextBox.Text; //Assigns EnteredEmployeeId To the Entered Numbes In Text Box
bool result = ***IsNumberInFile***(EnteredEmployeeId, "ManagerLoginId:", ManagersPath);
if (result)
{
//open new window
}
else
{
MessageBox.Show("User Not Found");
}
}
}
}
}
解决方案
此函数将读取整个文件并查找是否有插入的代码。它将与字符串一起使用(因为它是您的文本框的输出)并且将仅返回真或假(员工是否在文件中)而不是他的姓名、姓氏等。
static bool IsNumberInFile(string numberAsString, string LineName, string FileName)
{
var lines = File.ReadAllLines(FileName);
foreach(var line in lines)
{
var trimmedLine = line.Replace(" ", ""); //To remove all spaces in file. Not expecting any spaces in the middle of number
if (!string.IsNullOrEmpty(trimmedLine) && trimmedLine.Split(':')[0].Equals(LineName) && trimmedLine.Split(':')[1].Equals(numberAsString))
return true;
}
return false;
}
//使用示例
String ManagersPath = @"C:\Users\Name\Visual Studios Project Custom Files\Employee Id's\Managers\Manager_Ids.txt"; //Path To Manager Logins
String EnteredEmployeeId;
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void Employee_Id_TextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && //Checks Characters entered are Numbers Only and allows them
(e.KeyChar != '0'))
{
e.Handled = true;
}
else if (e.KeyChar == (char)13) //Checks if The "Enter" Key is pressed
{
EnteredEmployeeId = Employee_Id_TextBox.Text; //Assigns EnteredEmployeeId To the Entered Numbes In Text Box
bool result = IsNumberInFile(EnteredEmployeeId, "ManagerLoginId" , ManagersPath)
if(result)
//User is in file
else
//User is not in file
}
}
}
推荐阅读
- laravel - 删除行或ID时如何保存数据?
- c# - 我可以从 HttpWebRequest 更改或删除服务器名称指示 (SNI) 扩展吗?
- android - 将 google play 计费库更新到版本 3,但行为令人困惑
- node.js - 下载pdf文件在节点js中不起作用
- android - 如果我需要的 lvl 是 26,我如何支持 min sdk 14?
- flutter - 在另一个 SingleChildScrollView(Vertical) 中颤动 SingleChildScrollView(Horizontal)
- javascript - 在 HTML/CSS 中修复元素时遇到问题
- unity3d - Unity Admob 横幅突然变大,底部有视频
- java - 实现 Dijkstra 算法的问题
- javascript - 为什么 promise-limit 在 Nodejs 中不起作用?