【问题标题】:Looping through items of a combobox循环通过组合框的项目
【发布时间】:2013-12-11 07:33:00
【问题描述】:

我需要将组合框的每个项目与字符串中的单词进行比较。 如果匹配,我需要在字符串的单词前面和末尾加一个$。

我试过了

 if (!String.IsNullOrEmpty(modify))
            { 
                foreach(string item in tcomboBox1.Items) 
                {
                    bool contains = Regex.IsMatch(modify, @"\b"+item+"\b");
                    if (contains == true)
                    {
                        string theItem = "$" + item + "$";
                        modify = modify.Replace(item,theItem);
                    }
                }

                ttextBox1.Text = modify;
                modify = "";
            }

但是没有附加$符号。为什么会这样?

【问题讨论】:

  • 你想修改组合框中的项目还是什么?
  • 修改组合框项目或需要在ttextBox1.Text 中显示结果?向我展示组合框项目的示例和您的预期结果!
  • 您需要将更改传播到组合框吗?
  • @AnoushkaSeechurn 只使用if(contains) 而不是if (contains == true)
  • @AnoushkaSeechurn 在您的原始正则表达式中您在第二个 "\b" 之前错过了 @

标签: c# loops combobox foreach


【解决方案1】:

编辑

您的代码是正确的,根据给定的输入示例和结果问题在您的正则表达式中,看来您不需要"\b" 尝试一下:

bool contains = Regex.IsMatch(modify,item);

【讨论】:

  • 我的 IDE 无法识别 Environment.NewLine。我需要添加什么参考资料?
  • 来自System
  • 我认为,您的正则表达式存在问题,请尝试将您的代码与bool contains = Regex.IsMatch(modify, item); 一起使用您是否尝试过使用调试器逐步完成它
【解决方案2】:

您的正则表达式不正确,如果在修改字符串中的任何位置找到项目,它不会返回 true(我想这就是您想要的)

您不需要在前缀或后缀中使用 \b 来匹配

Regex.IsMatch(modify, item);

这与 modify 中的任何文本完美匹配,并且应该可以正常工作

【讨论】:

    猜你喜欢
    • 2015-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-01
    • 1970-01-01
    • 2012-04-28
    相关资源
    最近更新 更多