嗨,我在发帖之前看了一下,不知道该怎么做,所以我想知道是否有人能帮上忙。
基本上,我刚才的代码的工作原理是,如果我在文本框中输入一个单词,然后单击一个按钮,它就会在文本框2中显示我的字典中的拆分词。
例如,如果我的字典文件包含黑色、白色和我在文本框1中输入黑色,然后单击一个按钮,白色显示在文本框2中。...you明白吗?
所以无论如何,我正在尝试得到它,所以如果我在文本框1中输入一行文本,它会将这一行文本复制到文本框2中,并更改单词。所以
“我的椅子有一个黑色的垫子”可以翻译成“我的椅子有一个白色的垫子”。
private void btnTrans_Click(object sender, EventArgs e)
{
string outputString = null;
if (d.TryGetValue(inputBx.Text, out outputString))
{
outputBx.Text = inputBx.Text + outputString;
}
else
{
outputBx.Text = "Unknown";
}
}我不知道该怎么编辑才能满足我的需要,所以有什么帮助吗?
发布于 2012-03-29 13:01:05
var repStr = txtBox.Text;
foreach (var kvp in d)
{
repStr = repStr.Replace(kvp.Key, kvp.Value);
}
txtBox2.Text = repStr;您可能希望将kvp.Key替换为左侧和右侧的空格,将kvp.Value替换为左侧和右侧的空格,以确保不替换部分单词,或者确保字典的键和值都填充在左右空格中。
带字典:{“白色”、“黑色”}{“黑色”、“白色”}
如果这个句子同时包含白色和黑色,就会有问题。
另一种选择是Jetti's answer。
发布于 2012-03-29 13:10:28
string test = txtBox.Text;
StringBuilder sb = new StringBuilder();
Dictionary<string, string> dict = new Dictionary<string, string>();
dict["black"] = "white";
dict["white"] = "black";
string[] chunks = test.Split(' ');
foreach (string s in chunks)
{
string val;
if (dict.TryGetValue(s, out val))
{
sb.Append(val);
sb.Append(" ");
}
else
{
sb.Append(s);
sb.Append(" ");
}
}
textBox2.Text = sb.ToString().TrimEnd();这里有一些比需要的更多的内容(例如添加空格,然后在循环中找出它是否在末尾时进行修整),但是这肯定足够启动,如果需要的话,可以开始优化。注意:我添加字典只是为了我自己的测试,以确保它的工作(它确实如此)。
https://stackoverflow.com/questions/9925742
复制相似问题