html里面有一个javascript的数组现在要把里面数组转换成C#里面的数组
var gidx=new Array();
var GameFTRB=new Array();
GameFTRB[1]=new Array('67390','2007-04-04 06:00:00');
GameFTRB[2]=new Array('67390','2007-04-04 06:00:00');
GameFTRB[3]=new Array('67390','2007-04-04 06:00:00');
GameFTRB[4]=new Array('67390','2007-04-04 06:00:00');
GameFTRB[5]=new Array('67390','2007-04-04 06:00:00');
......
GameFTRB[n]=new Array('67390','2007-04-04 06:00:00');怎么用正则表达式去括号里面的数据?

解决方案 »

  1.   

    string str = @"
    var gidx=new Array();
    var GameFTRB=new Array();
    GameFTRB[1]=new Array('67390','2007-04-04 06:00:00');
    GameFTRB[2]=new Array('67390','2007-04-04 06:00:00');
    GameFTRB[3]=new Array('67390','2007-04-04 06:00:00');
    GameFTRB[4]=new Array('67390','2007-04-04 06:00:00');
    GameFTRB[5]=new Array('67390','2007-04-04 06:00:00');
    ......
    GameFTRB[n]=new Array('67390','2007-04-04 06:00:00');";Regex reg = new Regex(@"Array\('([^']*?)','([^']*?)');",RegexOptions.Multiline);
    MatchCollection ms = reg.Matches(str);
     
    for (int i = 0; i < ms.Count; i++)
    {
        Response.Write(ms[i].Result("$1") + "," + ms[i].Result("$2") + "<BR>");}
      

  2.   

    慕白兄
    好像不对吧
    我要转换是htm里面是javascript脚本里面的数组成C#里面是数组
    我的办法是先把htm里面转成文本string。再在里面希望用正则表达式来找到里面是javascript数组里面值,也是说htm文本里面找数组
    我是在winfrom里面获取的所以不用
    Response.Write(ms[i].Result("$1") + "," + ms[i].Result("$2") + "<BR>");
    只要C# Array谢谢指教
      

  3.   

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Text.RegularExpressions;namespace ConverArray
    {
        class Item
        {
            public int id;
            public string datetime;
        }    class Program
        {
            static string s = @"
                var gidx=new Array();
                var GameFTRB=new Array();
                GameFTRB[1]=new Array('67390','2007-04-04 06:00:00');
                GameFTRB[2]=new Array('67390','2007-04-04 06:00:00');
                GameFTRB[3]=new Array('67390','2007-04-04 06:00:00');
                GameFTRB[4]=new Array('67390','2007-04-04 06:00:00');
                GameFTRB[5]=new Array('67390','2007-04-04 06:00:00');
                GameFTRB[6]=new Array('67390','2007-04-04 06:00:00');";        static void Main(string[] args)
            {
                Regex regex = new Regex(@"new Array\('(?<ID>[^']*)','(?<DateTime>[^']*)'\)");
                MatchCollection mc = regex.Matches(s);
                Item[] items = new Item[mc.Count];
                int i = 0;
                foreach (Match match in mc)
                {
                    Item item = new Item();
                    item.id = int.Parse(match.Groups["ID"].Value);
                    item.datetime = match.Groups["DateTime"].Value;
                    items[i++] = item;
                }            for (int j = 0; j < items.Length; ++j)
                {
                    Console.WriteLine("item[{0}]=[id: {1}][datetime: {2}]", j, items[j].id, items[j].datetime);
                }
            }
        }
    }
      

  4.   

    MatchCollection mc = Regex.Matches(yourStr, @"(?<=\]\=new Array\(\')(?<g1>\d{5})\'\,\'(?<g2>.*?)\'(?!\))", RegexOptions.IgnoreCase);
    foreach (Match m in mc)
    {
        richTextBox2.Text += m.Groups["g1"].Value + "\n";
        richTextBox2.Text += m.Groups["g2"].Value + "\n";
    }
      

  5.   

    C#中的表达式还是很人性化的,在很多情况下没有转义符"\"还是可以的.
    LZ都试试吧
      

  6.   

    修正一下:
    string g1 = "",g2 = "",yourStr;
    yourStr = "GameFTRB[1]=new Array('67390','2007-04-04 06:00:00');";
    MatchCollection mc = Regex.Matches(yourStr, @"(?<=\]\=new Array\(\')(?<g1>\d{5})\'\,\'(?<g2>.*?)\'\)\;", RegexOptions.IgnoreCase);
    foreach (Match m in mc)
    {
    g1 = m.Groups["g1"].Value + "\n";
    g2 = m.Groups["g2"].Value + "\n";
    }
    Console.WriteLine("g1 is:{0}g2 is:{1}",g1,g2);
    Console.Read();