我有一个网站,需要从外部txt文件读取数据..我已将该文件放在App_data文件夹中,并使用此代码从该文件中读取数据
txt文件包含3个文本..其中包括:kevin123 INFO102lec INFO102k
protected void logInButton_Click(object sender, EventArgs e)
{
string usernameListString = File.ReadAllText(Server.MapPath("~") + "/App_Data/usernameFile.txt");
string[] userAray = usernameListString.Split(' ');
bool usernameExists = false;
for (int i = 0; i < userAray.Length; i++)
{
if (usernameTextBox.Text == userAray[i])
{
welcomeLabel.Text = "Welcome" + userAray[i];
}
if (usernameTextBox.Text != userAray[i])
{
welcomeLabel.Text = "unknown user";
}
usernameExists = true;
}
我想写一个for
循环,遍历userArray
的每个项目。在循环结束时,仅当在用户名文本框中输入的用户名出现在数组中时,才将usernameExists
设置为true。
当我在文本框中键入1这个名字时,我编写了一些代码?如果这个名字不存在,它会给一个欢迎标签?反之亦然!
上面的代码有什么问题吗?
答案 0 :(得分:1)
您可以使用Linq:
usernameExists = userArray.Any(x => x == usernameTextBox.Text);
此外,在您的示例中,您将userAray
声明为字符串数组..但您将其用作单个字符串。
答案 1 :(得分:1)
这样可行:
bool usernameExists = false;
for (int i = 0; i < userAray.Length; i++)
{
if (userAray[i] == "kevin123")
{
usernameExists = true;
break; // stop checking more values
}
}
或更简单:
bool usernameExists = userAray.Contains("kevin123");
或者,如果要检查数组是否包含多个值中的任何一个:
string[] userNamesToSearchFor = new[] { "kevin123", "INFO102lec", "INFO102k" };
bool usernameExists = userAray.Intersect(userNamesToSearchFor).Any();
关于您的更新,问题是您在循环遍历数组时尝试更新标签。您需要首先确定数组中是否存在用户名(usernameExists
)和然后设置指示结果的标签,例如:
for (int i = 0; i < userAray.Length; i++)
{
if (userAray[i] == usernameTextBox.Text)
{
usernameExists = true;
break; // stop checking more values
}
}
if (usernameExists)
{
welcomeLabel.Text = "Welcome " + usernameTextBox.Text;
}
else
{
welcomeLabel.Text = "unknown user";
}
答案 2 :(得分:1)
试试这个
protected void logInButton_Click(object sender, EventArgs e)
{
string usernameListString = File.ReadAllText(Server.MapPath("~")
+ "/App_Data/usernameFile.txt");
string[] userAray = usernameListString.Split(' ');
bool usernameExists = false;
for (int i = 0; i < userAray.Length; i++)
{
if (userAray[i]==usernameTextBox.Text)
{
welcomeLabel.Text = "Welcome" + userAray[i];
usernameExists = true;
}
else
{
welcomeLabel.Text = "unknown user";
}
}
答案 3 :(得分:0)
问题是您需要==
并尝试使用ReadAllLines读取文件中的所有行
string[] userAray = File.ReadAllLines();
if (userAray[i] == "kevin123" || userAray[i] == "INFO102lec" || userAray[i] == "INFO102k")
{
usernameExists = true;
break;
}
单=
用于分配。 ==
用于比较
答案 4 :(得分:0)
尝试:
bool usernameExists = false;
for (int i = 0; i < userAray.Length; i++)
{
if (userAray == "kevin123")
{
usernameExists =true;
}
}