高级聊天程序(写入前缀)

时间:2012-10-30 06:31:41

标签: c# list chat textwriter

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

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

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

2 个答案:

答案 0 :(得分: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));
}

希望我能正确理解你。

答案 1 :(得分: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

您还必须确保从列表中删除之前使用的索引以进行保存。