3

サーバー上にphpファイルがあり、このような文字列で情報をアプリ(c#)に送信します:

Text|Name|Date|Text|Name|Date|Text|Name|Date|......今度は分割して、ListViewerItemにテキスト、名前、日付を入力できるようにします。これは次の組み合わせです3 つ (テキスト、名前、日付) は新しい ListViewerItem に入れる必要があります。「|」で3回ごとに文字列を分割するにはどうすればよいですか ?

4

5 に答える 5

3

パイプ記号で分割し、テイク 3 でループするだけです。

public void Foo(string content)
{
    var entries = content.Split('|');

    for(int i = 0; i < entries.Length; i += 3)
    {
        var text = entries[0 + i];
        var name = entries[1 + i];
        var date = entries[2 + i];

        // TODO: add values to listview.
    }
}
于 2012-08-12T07:58:55.477 に答える
1

文字列を分割してから、文字列をグループ化します。

string[] values = data.Split('|');
List<string[]> lines =
  Enumerable.Range(0, values.Length / 3)
  .Select(
    i => new string[] { values[i * 3], values[i * 3 + 1], values[i * 3 + 2] }
  )
  .ToList();
于 2012-08-12T07:58:48.333 に答える
1

テキスト、名前、日付は実際には値であると想定しているため、一般的な区切り記号は | のみです。| で文字列を分割するのが最善の方法だと思います。結果の配列をループします。カウンターを保持し、3 項目ごとに、Text、Name、Date のプロパティを持つオブジェクトを作成します。次に、このオブジェクトがリストに追加され、リストが ListViewer にバインドされます。

于 2012-08-12T07:59:14.040 に答える
0
var values = "a|b|c|a|b|c|a|b|c|a|b|c|a|b|c|a|b|c|a|b|c|a|b|c".Split('|');
var result = Enumerable.Range(0, values.Length).GroupBy(i => Convert.ToInt32(Math.Floor((i / 3d)))).Select(group => String.Join("|", group.Select(i => values[i])));
于 2012-08-12T10:35:17.997 に答える
0

とを使用RegexLINQます。

var result = from Match match 
               in Regex.Matches(inputString, @"((?<t>\w+)\|(?<n>\w+)\|(?<d>\w+))+")
                select
                    new
                        {
                            Text = match.Groups["t"].Value,
                            Name = match.Groups["n"].Value,
                            Date = match.Groups["d"].Value
                        };
于 2012-08-12T10:37:32.777 に答える