C#搜索特定模式的字符串,并放入一个数组

时间:2011-04-19 17:55:34

标签: c# arrays search replace expression

我将以下字符串作为示例:

<tr class="row_odd"><td>08:00</td><td>08:10</td><td><a href="editactivity.php?act=11111">TEST1</a></td></tr><tr class="row_even"><td>08:10</td><td>08:15</td><td><a href="editactivity.php?act=22222">TEST2</a></td></tr><tr class="row_odd"><td>08:15</td><td>08:20</td><td><a href="editactivity.php?act=33333">TEST3</a></td></tr><tr class="row_even"><td>08:20</td><td>08:25</td><td><a href="editactivity.php?act=44444">TEST4</a></td></tr><tr class="row_odd"><td>08:25</td><td>08:30</td><td><a href="editactivity.php?act=55555">TEST5</a></td></tr>

我需要将输出作为onedimensional Array。 比如11111 = myArray(0),22222 = myArray(1),33333 = myArray(2),......

我已经尝试了myString.replace,但似乎我只能用这种方式替换一个Char。所以我需要使用表达式和for循环来填充数组,但由于这是我的第一个c#项目,这对我来说太过分了。

谢谢,

4 个答案:

答案 0 :(得分:1)

您似乎想要使用正则表达式搜索模式。然后将匹配(使用命名组)返回到数组中。

var regex = new Regex("act=\?(<?Id>\d+)");
regex.Matches(input).Cast<Match>()
     .Select(m => m.Groups["Id"])
     .Where(g => g.Success)
     .Select(g => Int32.Parse(g.Value))
     .ToArray();

(PS。我对正则表达式模式不肯定 - 你应该自己检查一下。)

答案 1 :(得分:0)

使用IndexOf和Substring的组合...这样的东西可以工作(不确定你的字符串变化多少)。这可能比你提出的任何正则表达式更快。虽然,查看字符串的长度,但这可能不是一个问题。

    public static List<string> GetList(string data)
    {
        data = data.Replace("\"", ""); // get rid of annoying "'s
        string[] S = data.Split(new string[] { "act=" }, StringSplitOptions.None);
        var results = new List<string>();

        foreach (string s in S)
        {
            if (!s.Contains("<tr"))
            {
                string output = s.Substring(0, s.IndexOf(">"));
                results.Add(output);
            }

        }
        return results;
    }

答案 2 :(得分:0)

你可以通过几种方式做到这一点。一对夫妇是:

a)使用正则表达式在字符串中查找所需内容。使用命名组,以便您可以直接访问匹配 http://www.regular-expressions.info/dotnet.html

b)将表达式拆分为子串的位置(例如,拆分为“act =”)。你需要做一些更多的解析来得到你想要的东西,但这不会很困难,因为它将在分裂字符串的开头(并且你的其他srings中没有你的子字符串)< / p>

答案 3 :(得分:0)

使用带有"<tr>","</tr>","<td>","</td>", "<a>","</a>"功能的strinng-variable.split()等HTML标记拆分字符串。这给出了数组列表。

Split html row into string array