如何将字符串:a[sdk]adf[2wse]opj[asdf]2wesa拆分为a
[sdk]
adf
[2wse]
opj
[asdf]
2wesa如果用正则 希望给各思路 谢谢:)

解决方案 »

  1.   

    protected void Page_Load(object sender, EventArgs e)
        {       
            string testString = TextBox1.Text;
            string[] result = testString.Split(new char[] { '[', ']' });
            Response.Write("分解字串:<br>");
            int count = 0;
            foreach (string rword in result)
            {
                if (count % 2 == 0&&rword.Length!=0)
                {
                    Response.Write(rword + "<br>");
                }
                else if(rword.Length!=0)
                {
                    Response.Write("[" + rword + "]<br>");
                }
                count++;
            }
        }方法笨了點,可以湊合著用.
      

  2.   

    能用就行 多谢EKingYan 再等等 看看还有没其它方法:)
      

  3.   

    string str = "a[sdk]adf[2wse]opj[asdf]2wesa";
    Regex regex = new Regex(@"(\[\w+\])");
    string[] strs = regex.Split( str );
      

  4.   

    正则的这样试下string yourStr = richTextBox1.Text;
    MatchCollection mc = Regex.Matches(yourStr, @"(\w+)(\[\w+\])?");
    foreach (Match m in mc)
    {
        richTextBox2.Text += m.Groups[1].Value + "\n";
        richTextBox2.Text += m.Groups[2].Value + "\n";
    }上面是[]内外分开提取的,下面的是一起提取的string yourStr = richTextBox1.Text;
    MatchCollection mc = Regex.Matches(yourStr, @"\[?\w+\]?");
    foreach (Match m in mc)
    {
         richTextBox2.Text += m.Value + "\n";
    }
      

  5.   

    我的最简单,测试通过
    string str = "a[sdk]adf[2wse]opj[asdf]2wesa";
    string[] arr = str.Split(new char[] {'[',']'});
    for(int i=1;i<arr.Length;i+=2)
    {
        arr[i] = '[' + arr[i] + ']';
    }
      

  6.   

    我的分割与EKingYan的一样,但是偶数元素加方括号没必要那么麻烦
      

  7.   

    hdt(倦怠)丢掉了 []中的内容
    lxcnn(过客) 如果有 <> 符号无法通过
      

  8.   

    hdt(倦怠)丢掉了 []中的内容
    ====================
    你测一下就知道了
      

  9.   

    string str = "a[sdk]adf[2wse]opj[asdf]2wesa";
    Regex regex = new Regex(@"(\[\w+\])");
    string[] strs = regex.Split( str );
      =====================
    watch
    - strs {Length=7} string[]
    [0] "a" string
    [1] "[sdk]" string
    [2] "adf" string
    [3] "[2wse]" string
    [4] "opj" string
    [5] "[asdf]" string
    [6] "2wesa" string
      

  10.   

    viena(维也纳N02) 也谢谢你 不过[]不一定出现在奇数还是偶数位置 
    也可能连续出现 比如:[1]a[b][c]d 怪我前面没有描述清楚
    我有一个思路 就是把[something]中的内容替换为<flag>[something]<flag>然后以<flag>拆分
    不知道可以不
    现在就是不知道如何替换 应该也是正则吧
    哪位大虾帮忙写个代码:)
      

  11.   

    hdt(倦怠) 
    先感谢一下哈:)
    如果非[]中的字符包含"<"或">"就无法通过
      

  12.   

    以为只有字母,那这个总行了吧string yourStr = richTextBox1.Text;
    MatchCollection mc = Regex.Matches(yourStr, @"\[?[^\[\]]+\]?");
    foreach (Match m in mc)
    {
        richTextBox2.Text += m.Value + "\n";
    }
      

  13.   

    lxcnn(过客) 高!!!!
    你的这个是不是原理和hdt(倦怠)的差不多能不能稍微解释一下我把分提高了
      

  14.   

    Regex regex = new Regex(@"(\[[^\[\]]+\])");
      

  15.   

    你说的是不清楚,\w 代表任意单词字符 , 一开始你可没说里面有<>非单词字符
      

  16.   

    具体实现原来没研究过-_-!!!我写的就是把匹配到的内容取到一个集合里\[?[^\[\]]+\]?上面正则的意思就是,把不包含“[”和“]”的字符串,可以以“[”开头,以“]”结尾,也可以没有,取到一个集合里,说起来有点绕嘴,就是开头和结尾可有可无,中间不包括“[”和“]”的字符串取到集合里,然后foreach遍历对里面的内容进行后续处理就行了hdt(倦怠) 大哥的方法也可以做到的,只不过你没有说清楚,以为只有字母呢
      

  17.   

    如果在 Regex.Split 表达式中使用捕获组,则生成的字符串数组中会包含捕获组。"one-two-banana" 用(-)会产生数组项“one”、“-”、“two”、“-”、“banana”。
      

  18.   

    To hdt(倦怠):
       原来 Regex的Split包含捕获组,一直以为跟string的split一样-_-!!!
       谢谢你了
    顺便问一下给帖子提分怎么操作 我刚注册的号 大家这么热情 只给20太少了
      

  19.   

    我最开始用的是
    Regex.Split(string input, string pattern)
    就不包含捕获组

    Regex regex = new Regex(string pattern)
    regex.Split(string input)
    就包含
    原来是这个样子的
      

  20.   

    <script>
    strTest = "a[sdk]adf[2wse]opj[asdf]2wesa";
    arrTest =strTest.split("[");
    for(i=0; i<arrTest.length; i++)
    {
    //document.write(arrTest[i]+"<br>");
    inArrTest = arrTest[i].split("]");
    for (k=0; k<inArrTest.length;  k++)
    {
    document.write(inArrTest[k]+"<br>");
    }
    }
      </script>
      

  21.   

    <script language="javascript">
    strTest = "a[sdk]adf[2wse]opj[asdf]2wesa";
    arrTest =strTest.split("[");
    for(i=0; i<arrTest.length; i++)
    {
    //document.write(arrTest[i]+"<br>");
    inArrTest = arrTest[i].split("]");
    for (k=0; k<inArrTest.length;  k++)
    {
    if (inArrTest.length>=2 && k==0)
    {
    document.write("["+inArrTest[k]+"]<br>");
    }
    else
    {
    document.write(inArrTest[k]+"<br>");
    }
    }
    }
    </script>
      

  22.   

    那请问如何把
    a[sdk]adf[2wse]opj[asdf]2wesa
    拆分成:
    a
    [
    sdk
    ]
    adf
    [
    2wse
    ]
    opj
    [
    asdf
    ]
    2wesa