这是一个程序,它读取 CSV 文件,将值添加到字典类,然后分析文本框中的字符串以查看是否有任何单词与字典条目匹配。它将把缩写(LOL、ROFL 等)替换为真实的单词。它通过将输入的文本拆分为单个单词来匹配字符串。
public void btnanalyze_Click(object sender, EventArgs e)
{
var abbrev = new Dictionary<string, string>();
using (StreamReader reader = new StreamReader("C:/Users/Jordan Moffat/Desktop/coursework/textwords0.csv"))
{
string line;
string[] row;
while ((line = reader.ReadLine()) != null)
{
row = line.Split(',');
abbrev.Add(row[0], row[1]);
Console.WriteLine(abbrev);
}
}
string twitterinput;
twitterinput = "";
// string output;
twitterinput = txtInput.Text;
{
char[] delimiterChars = { ' ', ',', '.', ':', '\t' };
string text = twitterinput;
string[] words = twitterinput.Split(delimiterChars);
string merge;
foreach (string s in words)
{
if (abbrev.ContainsKey(s))
{
string value = abbrev[s];
merge = string.Join(" ", value);
}
if (!abbrev.ContainsKey(s))
{
string not = s;
merge = string.Join(" ", not);
}
;
MessageBox.Show(merge);
}
到目前为止的问题是最终的字符串被输出到文本框中,但在覆盖时只打印最后一个单词。这是一项大学作业,所以我正在寻找正确方向的插入力,而不是实际的答案。非常感谢!
最佳答案
string.Join()
获取字符串集合,将它们连接在一起并返回结果。但就您而言,集合仅包含一项:值
,或不
。
为了使您的代码正常工作,您可以使用以下内容:
merge = string.Join(" ", merge, value);
但是由于字符串的工作方式,这会非常慢,因此您应该使用StringBuilder
。
关于c# - 字符串连接/覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10367821/