DOBON.NET DOBON.NETプログラミング掲示板過去ログ

テキスト内の検索

  • 題名: テキスト内の検索
  • 著者: 小心者
  • 日時: 2009/10/01 18:05:18
  • ID: 25481
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[XP,C#]
分類:[.NET]

いつも閲覧させて頂いています。

テキストボックス内で

"FXFX"の文字列を含む行にある
"X","Y","Z"の値を格納して(X150.222,X-30.111等小数点含む)
全てFXFXの含む行分の検索結果を
X[1]=150.222
X[2]=-30.111
と格納したいのですが良い方法は無いでしょうか?


FXFXを検索して、検索結果の値分格納すればよいのでしょうか?
さては座標処理でしょうか?懐かしいです。

> と格納したいのですが良い方法は無いでしょうか?

LINQ をうまく使えばいけそうな気がします。

テキストボックスの Multiline プロパティが True に設定してあると想定して
とりあえず "FXFX" を含む行だけ絞りこむ処理を考えてみました。


string[] array = textBox1.Text.Split('\n');

var points = from pt in array where pt.IndexOf("FXFX") > -1 select pt;

textBox1.Text = String.Join("\n", points.ToArray<string>());


これをさらに膨らませてみるといいかと思います。
■No25482に返信(ひらぽんさんの記事)
>>と格納したいのですが良い方法は無いでしょうか?
> LINQ をうまく使えばいけそうな気がします。
> テキストボックスの Multiline プロパティが True に設定してあると想定して
> とりあえず "FXFX" を含む行だけ絞りこむ処理を考えてみました。

絞り込んだ後の、X/Y/Z の区切りがどうなっているのか分からなかったので、
カンマ区切りと仮定して作ってみました。要C# 3.0以上。


private void Form1_Load(object sender, EventArgs e)
{
    textBox1.Text =
@"TEST1,FXFX,X1000.001,Y-12.345,Z123.456,AAA
TEST2,FAZZ,X200.002,Y-3.000,Z11.111,FXFX
TEST3,SMPL,30.003,Y12.345,Z123.450,CCC
TEST4,FXFX,X4.004,Y-33.333,Z-2.997,YYY
TEST5,PRGM,X5.005,Y-72.768,Z54.123,ZZZ";
}

private void button1_Click(object sender, EventArgs e)
{
    listBox1.Items.Clear();

    var reg = new Regex(@"^[XYZ](?<Value>-?\d*\.?\d*)$");
    var listFXFX = textBox1.Lines.Where(sw1 => sw1.Contains("FXFX")) // FXFX を含む行を取得
        .Select(ss => ss.Split(',').Where(sw2 => reg.IsMatch(sw2))); // X,Y,Zで始まる数値列を取得

    // X,Y,Zそれぞれを合計
    var result = new Dictionary<char, decimal>() { { 'X', 0m }, { 'Y', 0m }, { 'Z', 0m } };
    foreach (var row in listFXFX)
    {
        foreach (string col in row)
        {
            result[col[0]] += decimal.Parse(reg.Match(col).Groups["Value"].Value);
        }
    }

    // 結果表示
    listBox1.Items.AddRange(result.Select(p => p.Key + " = " + p.Value).ToArray());
    /*
        X = 1204.007
        Y = -48.678
        Z = 131.570
    */
}
  • 題名: Re[3]: テキスト内の検索
  • 著者: 小心者
  • 日時: 2009/10/02 14:41:32
  • ID: 25485
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
ひらぽん様
魔界の仮面弁士様

ありがとうございます。

応用していけました!

感謝です
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板