2012-10-30 78 views
1

我已经编写了一个聊天程序巨头,迄今已设法克服阻止我的每一个障碍,即使是我已经想了好几天,但这一个我不能让我的头靠近。所以我正在研究一个前缀系统,我将目标名称输入到目标文本框中,并在前缀文本框中输入前缀名称,然后单击前缀按钮。我已经将它写入用户名和所选的前缀到一个带有“|”的文本文件中分开它。就像这样:高级聊天程序(写前缀)

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

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

回答

1

所以,你必须有这样的数据的文本文件:

USER1 |上一页1
用户2 | 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

感谢您的评论!真的很有帮助!我知道了! – Daaksin

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 

你也必须确保要保存其使用之前从列表中删除索引。

+0

非常感谢你的回答,我想我明白现在该做什么! – Daaksin