string str = "铅笔 (橡皮 | 钢笔)";
现在括号外面是 1个 括号里面是 2个 
string str = "铅笔 蜘蛛 (橡皮 | 钢笔 | 麻雀)";
现在括号外面是 2个 括号里面是 3个  
string str = "铅笔 蜘蛛 蚂蚁 (橡皮 | 钢笔)";
现在括号外面是 3个 括号里面是 2个
这个关键字不能固定,但是可以保证外面关键字和括号里的都不会超过8个
请问怎样判断括号外面和括号里面和外面各有多少个关键字?具体怎么实现的。谢谢!

解决方案 »

  1.   

    如果能保证内外都有,如下,否则先做下判断//string str = "铅笔 蜘蛛 蚂蚁 (橡皮 | 钢笔)";
    //string str = "铅笔 蜘蛛 (橡皮 | 钢笔 | 麻雀)";
    string str = "铅笔 (橡皮 | 钢笔)";string[] temp = str.Split('(');
    string[] outer = temp[0].Trim().Split(' ');
    string[] inner = temp[1].Trim().Split('|');int outerNum = outer.Length;
    int innerNum = inner.Length;MessageBox.Show("外:" + outerNum + " 内:" + innerNum);
      

  2.   

    如果是 string str = "(牛 | 马 | 羊) -(橡皮 | 钢笔)";
    不带-号括号的有 3 个  带-号括号的有 2 个
    应该怎么判断呢?
      

  3.   

    如果是与前面所举例子放在一起处理,那么把你可能出现的各种情况都列举一下如果是就这一种格式单独处理,可以这样string str = "(牛 | 马 | 羊) -(橡皮 | 钢笔)";string[] temp = str.Split('-');
    string[] front = temp[0].Split('|');
    string[] back = temp[1].Split('|');int frontNum = front.Length;
    int backNum = back.Length;MessageBox.Show("前:" + frontNum + " 后:" + backNum);
    这里没有对前后是否都有做判断,有这个需要自己加一下吧