数组读取错误

Incorrect reading of an array

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

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

这是我的 users.txt:

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

这是我的 c-sharp 脚本:

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

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

data = streamReader.ReadToEnd().Replace("\r\n", "");