读取数组错误



我在c-sharp .net工作,我正在为我的项目创建一个登录屏幕。我有一个文本文件与登录信息的所有用户。我的c-sharp脚本将该文件读取为字符串,然后将其分成两个列表,_usernames和_passwords。当用户输入他们的登录信息并点击login时,_usernames[0]和_passwords[0]帐户信息是唯一有效的。我想让它查找输入的所有_usernames,如果找到了就检查_password[与_usernames相同的索引]如果两者都与用户提交的相同它就会添加&;true&;

为什么不能正确地从数组中读取?

这是我的users.txt:

admin,test|
andrew,yeet|
zana,happy|

我的c调脚本:

using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace BaseUserInterfase
{
public partial class Login : Form
{
string path = Directory.GetCurrentDirectory() + "\data\users.txt";
string data;
string[] _usernames = new string[10];
string[] _passwords = new string[10];
public Login()
{
InitializeComponent();
}
private void Login_Load(object sender, EventArgs e)
{
GetLoginData();
}
private void btnLogin_Click(object sender, EventArgs e)
{
rtbTemp.Text = "";
for(int i = 0; i < _usernames.Length; i++)
{
if(_usernames[i] == null)
{
break;
}
rtbTemp.AppendText("n" + _usernames[i]);
rtbTemp.AppendText("n" + tbUsername.Text.ToString());
rtbTemp.AppendText("n" + _passwords[i]);
rtbTemp.AppendText("n" + tbPassword.Text.ToString());
if (_usernames[i] == tbUsername.Text.ToString())
{
rtbTemp.AppendText("nUsername true");
if (_passwords[i] == tbPassword.Text.ToString())
{
rtbTemp.AppendText("nPassword true");
rtbTemp.AppendText("ntrue");
return;
}
}
}
rtbTemp.AppendText("nfalse");
}
public void GetLoginData()
{
using (StreamReader streamReader = new StreamReader(path, Encoding.UTF8))
{
data = streamReader.ReadToEnd();
}
List<string> _data = data.Split('|').ToList();
_data.RemoveAt(_data.Count - 1);
rtbTemp.AppendText("n");
Array.Resize<string>(ref _usernames, _data.Count);
Array.Resize<string>(ref _passwords, _data.Count);
foreach (string _item in _data)
{
List<string> userdata = _item.Split(',').ToList();
string username = userdata[0].ToString();
string password = userdata[1].ToString();
Console.WriteLine(_item);
Console.WriteLine(username);
Console.WriteLine(password);

for(int i = 0; i < _data.Count; i++)
{
if(_usernames[i] == null)
{
_usernames[i] = username;
_passwords[i] = password;
break;
}
}
}
}
private void btnExit_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}

这是登录屏幕的图像:1

您的文件包含回车符。在拆分其内容之前删除它们

data = streamReader.ReadToEnd().Replace("rn", "");