C# 查找包含…;等

C# 查找包含…;等,c#,C#,好的,我基本上是想找到一行“Users.txt” 这是到目前为止我的密码 if (ok == "b" || ok == "B") { using (StreamWriter w = File.AppendText("Users.txt")) { //Test Out.WriteLine("Please state the username"); string user = Console.Re

好的,我基本上是想找到一行“Users.txt”

这是到目前为止我的密码

if (ok == "b" || ok == "B")
    {
    using (StreamWriter w = File.AppendText("Users.txt"))
        {
            //Test
            Out.WriteLine("Please state the username");
            string user = Console.ReadLine();
            Out.WriteLine("Checking..");
            if (w.Equals(user))
            {
                Out.WriteLine("Username is taken");
            }
            Thread.Sleep(pause);
            Out.WriteLine("Please state the password for the user");
            string pass = Console.ReadLine();
            Logger(user, pass, w);
            // Close the writer and underlying file.
            w.Close();
            Out.WriteLine("Checking..");
            Out.WriteBlank();
            Thread.Sleep(pause);
            Out.WriteLine("Anything else Mr." + Environment.UserName + " ?");
        }
            string choice = Console.ReadLine();

            if (choice == "no")
            {
                Boot();
            }
            if (choice == "yes")
            {
                Console.Clear();
                Console.Title = "Administrator Panel";
                Panel();
            }
        }
希望它查看“用户”是否被占用,然后阻止他们执行该过程

感谢您的帮助。

尝试使用
文件读取(
StreamReader
)。打开
)每个现有用户名到一个数组/列表中,然后将用户输入与该列表进行比较

您当前的代码实际上没有读取任何内容,因为您正在将
StreamWriter
File.AppendText一起使用,它只允许您写入文件的末尾

示例

列表用户=新列表();
使用(StreamReader r=newstreamreader(“Users.txt”))
{
弦线;
而((line=r.ReadLine())!=null)
{
用户。添加(行);
}
}
...
字符串user=Console.ReadLine();
Out.WriteLine(“检查…”);
if(users.Contains(user))
{
Out.WriteLine(“使用用户名”);
}
尝试使用
文件读取(
StreamReader
。打开
)每个现有用户名到一个数组/列表中,然后将用户输入与该列表进行比较

您当前的代码实际上没有读取任何内容,因为您正在将
StreamWriter
File.AppendText一起使用,它只允许您写入文件的末尾

示例

列表用户=新列表();
使用(StreamReader r=newstreamreader(“Users.txt”))
{
弦线;
而((line=r.ReadLine())!=null)
{
用户。添加(行);
}
}
...
字符串user=Console.ReadLine();
Out.WriteLine(“检查…”);
if(users.Contains(user))
{
Out.WriteLine(“使用用户名”);
}

您的代码存在各种问题。让我们看看是否可以一次分解一块

using (StreamWriter w = File.AppendText("Users.txt"))
如果您想打开“Users.txt”并在其中添加文本,则此代码将非常有用。由于要打开文件并从中读取,因此需要使用不同的对象,即
StreamReader
对象:

using (StreamReader r = File.Open("Users.txt"))
接下来,您要检查给定的用户名是否在文件中。你正在做:

if (w.Equals(user))
{
    Out.WriteLine("Username is taken");
}
这是行不通的。您正在将
StreamWriter
对象与
String
对象进行比较。他们永远不会平等

您需要做的是更改程序的顺序,如下所示:

username,password
username2,password2
johnsmith,mysecretcode
janedoe,blahblah
首先,将文件的全部内容读入内存。然后,在使用
语句的
之外,处理用户输入和用户名/密码检查

假设文件的组织方式如下:

username,password
username2,password2
johnsmith,mysecretcode
janedoe,blahblah
例如,您可以将每一行读入
字典
对象,其中
是用户名,
是密码

Dictionary<String, String> myDictionary = new Dictionary<String, String>
// Example of adding ONE username/password to the dictionary
myDictionary.Add("username", "password");
检查密码将是:

bool doesPasswordMatch = myDictionary[username] == givenPassword;

试试看!C#是一种很好的学习语言。

您的代码存在各种问题。让我们看看是否可以一次分解一块

using (StreamWriter w = File.AppendText("Users.txt"))
如果您想打开“Users.txt”并在其中添加文本,则此代码将非常有用。由于要打开文件并从中读取,因此需要使用不同的对象,即
StreamReader
对象:

using (StreamReader r = File.Open("Users.txt"))
接下来,您要检查给定的用户名是否在文件中。你正在做:

if (w.Equals(user))
{
    Out.WriteLine("Username is taken");
}
这是行不通的。您正在将
StreamWriter
对象与
String
对象进行比较。他们永远不会平等

您需要做的是更改程序的顺序,如下所示:

username,password
username2,password2
johnsmith,mysecretcode
janedoe,blahblah
首先,将文件的全部内容读入内存。然后,在使用
语句的
之外,处理用户输入和用户名/密码检查

假设文件的组织方式如下:

username,password
username2,password2
johnsmith,mysecretcode
janedoe,blahblah
例如,您可以将每一行读入
字典
对象,其中
是用户名,
是密码

Dictionary<String, String> myDictionary = new Dictionary<String, String>
// Example of adding ONE username/password to the dictionary
myDictionary.Add("username", "password");
检查密码将是:

bool doesPasswordMatch = myDictionary[username] == givenPassword;

试试看!C#是一门很好学的语言。

我是一名学习者,你能给我举一个你所说的例子吗?@Dev Studios-a
StreamWriter
写入文件。你想从一个文件中读取,所以你需要一个
StreamReader
。建议:在这个功能正常工作后,搜索你想要实现的最佳实践(从控制台读取输入等),然后用你学到的重构你的代码。我实际上是在对每一行进行比较如果函数被多次调用,那么我将a)检查现有的读取用户名。b) 如果找不到,则继续读取和比较(然后存储在列表中),而不是读取整个文件并进行比较。编辑:哈希集也可能更好地存储用户names@Rob:A)考虑到我们根本看不到此代码的任何上下文,这是非常挑剔的。B) 我不打算为提交者编写一个容错的低语干净高效的代码实现,这是他的工作。我是一个有点学习的人,你能给我举个例子说明你在说什么吗?@Dev Studios-a
StreamWriter
写入文件。你想从一个文件中读取,所以你需要一个
StreamReader
。建议:在这个功能正常工作后,搜索你想要实现的最佳实践(从控制台读取输入等),然后用你学到的重构你的代码。我实际上是在对每一行进行比较如果函数被多次调用,那么我将a)检查现有的读取用户名。b) 如果找不到,则继续读取和比较(然后存储在列表中),而不是读取整个文件并进行比较。编辑:哈希集也可能更好地存储用户names@Rob:A)考虑到我们根本看不到此代码的任何上下文,这是非常挑剔的。B) 我不会写一篇容错的低语,干净高效