2011-04-19 7 views
0
私は例として、次の文字列を抱えている

に入れる:C#の特定のパターンのための文字列に、検索、およびアレイ

<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> 

は私が一次元配列として出力を持っている必要がありますする必要があります。 11111 = myArray(0)、22222 = myArray(1)、33333 = myArray(2)、......

私はすでにmyString.replaceを試していますが、そのようにシングルチャー。だから私は式と配列を埋めるためのループを使用する必要がありますが、これは私の最初のC#プロジェクトであるので、それは私にとってはあまりにも橋です。

おかげで、

+0

'String.Replace'は、引数として2つの文字列を受け取るオーバーロードがあります。文字列リテラルに二重引用符を使用するようにしてください。 (すなわち「」) – vlad

答えて

0

は、IndexOfメソッドとサブストリングの組み合わせを使用して...このようなものは(あなたの文字列がどのように変化するかくらいわからない)に働くだろう。これはおそらくあなたが思いつくRegexより速いでしょう。あなたの弦の長さを見ると、それは本当に問題ではないかもしれません。

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; 
    } 
+0

私は同意する、あるいは正規表現を使うかもしれないが、何度か簡単な – Rulas

0

これを行う方法はいくつかあります。カップルは:

)正規表現を使用して、文字列に表示する内容を探します。あなたが直接
http://www.regular-expressions.info/dotnet.html

bはマッチにアクセスできるようにという名前のグループを使用)、あなたの部分文字列が上(例えば分割「行為=」)されている場所で式を分割します。あなたが望むものを得るためにもう少しパースする必要があるでしょうが、それは分割された文字列の始めにあるので難しくありません(そしてあなたの部分文字列を持っていない他の文字列もあります)

1

Regex検索パターンを使いたいと思うようです。その後、名前付きグループを使ってマッチを配列に返します。

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。私は正規表現パターンについて肯定的ではありません。あなた自身でそれをチェックしてください)。

0

"<tr>","</tr>","<td>","</td>", "<a>","</a>"strinng-variable.split()などのHTMLタグを使用して文字列を分割します。これにより配列のリストが得られます。

Split html row into string array

関連する問題