1

我编写了一个聊天程序巨人,到目前为止,我已经成功克服了所有阻碍我的障碍,甚至是我思考了好几天的障碍,但我无法理解这一点。所以我正在研究前缀系统,我在目标文本框中输入目标名称,在前缀文本框中输入前缀名称,然后单击前缀按钮。我已经将用户名和选择的前缀写入带有“|”的文本文件 分开它。像这样:

void writePrefixes(string target, string prefixs)
    {
        TextWriter twp = new StreamWriter("prefix.txt");
        twp.WriteLine(target + "|" + prefixs + Environment.NewLine);
        twp.Close();
    }

现在,每次服务器启动时,它都会导入文本文件并使用 foreach 循环将每个文件加载到列表中。现在,每次客户端发送消息时,我希望在列表中使用“target”检查它的用户名,然后将其用户名修改为在其前面有前缀。我怎样才能做到这一点?提前致谢!抱歉,问题太长了,我是新手,如果太长,请告诉我!

4

2 回答 2

1

所以你有一个包含如下数据的文本文件:

user1|pre1
user2| pre2

你正在将这些字符串加载到一个普通的列表中吗?我认为这样的事情将是最好的选择:

var userList = new List<string>();
userList.Add("TestUser1|pre1");
userList.Add("TestUser2|pre2");

foreach (var user in userList)
{
    var userParts = user.Split(new[] { '|' });
    var userName = userParts[0];
    var prefix = userParts[1];

    Console.WriteLine(string.Format("{0}{1}", prefix, userName));
}

希望我已经正确理解了你。

于 2012-10-30T06:55:06.720 回答
1

所以你基本上有两个列表:一个带有用户名,一个带有前缀,两个都是字符串。我想您必须存储输入的每个前缀,并由您的前缀未使用的字符分隔。

//go through file
var entry = file.ReadLine().Split('|');
userList.Add(entry[0]);
prefixList.Add(entry[1]);

//when you want to go for the prefix
var idx = userList.IndexOf(username);
var allPrefix = prefixList[idx].Split("seperator");
var newPrefix = allPrefix[prefixList[idx].Count - 2];

//yes you have to make sure the index is correct, you dont leave bounderies etc. but I hope you get the idea

You also would have to make sure the index which was used before is removed from the list to be saved.

于 2012-10-30T06:58:47.590 回答