Мэтью ~ Дорриан ~ Дорриан ~ Мэтью
Это написано в одну строку, и вы пытаетесь читать все построчно
строка [] users File.ReadLines ("users.txt"). ToArray ();
users [0] будет "Мэтью ~ Дорриан ~ Dorrian ~ Мэтью" и нет пользователей [1]
для (int i = 0; i
Так что это будет l oop только один раз, и с этим
если (username == usernameandpassword [0] && password == usernameandpassword [1])
, то вы получите только 2 слова из 4, потому что оно повторяется только 1 раз
Редактировать: Мое решение было бы изменить это
if(username == usernameandpassword[0] && password == usernameandpassword[1])
{
userfound = true;
break;
}
на это
int i = 0;
while(i + 1 < usernameandpassword.Length)
{
if(username == usernameandpassword[i] && password == usernameandpassword[i+1])
{
userfound = true;
break;
}
i+=2;
}
Редактировать 2: Но тогда, это не будет работать, если ваш файл будет выглядеть так:
Matthew~Dorrian~Dorrian
Matthew
Было бы просто пропустить второго Дорриана, а затем второго Мэтью, потому что остался только один. Итак, вот решение, которое решает это:
int count = 0; //how many strings in buf
string[] buff = new string[2]{ "", "" }; //here we will store our results
for (int i = 0; i < users.Length; i++)
{
string[] usernameandpassword = users[i].Split("~");
for (int wordIndex = 0; wordIndex < usernameandpassword.Length; wordIndex++)
{
buff[count] = usernameandpassword[wordIndex];
count++;
if (count > 1)
{
if (username == buff[0] && password == buff[1])
{
userfound = true;
break;
}
count = 0;
}
}
}