首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有分裂词的TryGetValue

带有分裂词的TryGetValue
EN

Stack Overflow用户
提问于 2012-03-29 12:53:18
回答 2查看 305关注 0票数 0

嗨,我在发帖之前看了一下,不知道该怎么做,所以我想知道是否有人能帮上忙。

基本上,我刚才的代码的工作原理是,如果我在文本框中输入一个单词,然后单击一个按钮,它就会在文本框2中显示我的字典中的拆分词。

例如,如果我的字典文件包含黑色、白色和我在文本框1中输入黑色,然后单击一个按钮,白色显示在文本框2中。...you明白吗?

所以无论如何,我正在尝试得到它,所以如果我在文本框1中输入一行文本,它会将这一行文本复制到文本框2中,并更改单词。所以

“我的椅子有一个黑色的垫子”可以翻译成“我的椅子有一个白色的垫子”。

代码语言:javascript
复制
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";        
    }
}

我不知道该怎么编辑才能满足我的需要,所以有什么帮助吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-29 13:01:05

代码语言:javascript
复制
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

票数 2
EN

Stack Overflow用户

发布于 2012-03-29 13:10:28

代码语言:javascript
复制
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();

这里有一些比需要的更多的内容(例如添加空格,然后在循环中找出它是否在末尾时进行修整),但是这肯定足够启动,如果需要的话,可以开始优化。注意:我添加字典只是为了我自己的测试,以确保它的工作(它确实如此)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9925742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档