如何查找字符串中匹配的括号对并设置样式?

时间:2015-07-21 15:47:34

标签: javascript c# asp.net

我正在开发一个项目,其中我有许多括号的字符串,如((A和B和(C或(D和E)))或F)。我需要找到一种方法来找到对和样式或着色它们以显示它们是匹配的。例如,“D和E”周围的括号为绿色,“C或(D和E)”周围的括号为蓝色。对于匹配对我使用堆栈但找不到设置颜色的方法,如果有更好的方式我可以尝试它。我在asp.net和C#工作。谢谢!

编辑:这是生成字符串的代码。 terms是值列表,innerConnector是基于用户输入的“和”或“或”,子组是较大组中的组。 (A和(B或C))A是一个术语,(B或C)是一个子组。我想取回字符串返回并将颜色应用于括号。

public string toString()
    {
        string str = "(";
        if(terms.Count > 0)
        {
            for(int i = 0; i < terms.Count; i++)
            {
                if(i == 1)
                {
                        str += terms[i];
                }
                else
                {
                    str += " " + innerConnector + " " + terms[i];
                }
            }
        }
        if(children != null)
        {
            for(int i = 0; i < terms.Count; i++)
            {
                if(i == 1 && terms.Count == 0)
                {
                    str += childGroups[i].toString();
                }
                else
                {
                    str += " " + innerConnector + " " childGroups[i].toString();    
                } 
            }
        }
        str += ")";
    }

1 个答案:

答案 0 :(得分:1)

我发现您已从问号标签中删除了javascript。无视下面。

实际玩这个游戏真的很有趣。这不是最优雅的解决方案!

我对这段代码略有评论,因为我是一个可爱的家伙。

Here are the octave 3.8.1 packages I have loaded:
>>> pkg list
Package Name  | Version | Installation directory
--------------+---------+-----------------------
     control *|   2.6.2 | /usr/share/octave/packages/control-2.6.2
     general *|   1.3.4 | /usr/share/octave/packages/general-1.3.4
    geometry *|   1.7.0 | /usr/share/octave/packages/geometry-1.7.0
    parallel *|   2.2.0 | /usr/share/octave/packages/parallel-2.2.0
      signal *|   1.2.2 | /usr/share/octave/packages/signal-1.2.2
     specfun *|   1.1.0 | /usr/share/octave/packages/specfun-1.1.0

JSFiddle