プロが教えるわが家の防犯対策術!

前略
・.NET 2012 のC#をつかっています。 下記のようなマイコンのソースコードから0xXX, 0xXX,...  で表記されているデータ部分 すなわち16進数とその区切りカンマだけを C#のプログラムで抽出したと思っています。いろいろやっているのですがうまくゆきません。 リッチテキストに抽出前のソースプログラムを表示して、ボタンをクリックしたら このリッチテキストに抽出された文字列(データ部分)だけを表示したいと思っています。どなたか具体的にコードサンプルで、ご教示いただければ幸いです。
 尚、実際に作成したいデータは フォントの構造体からデータ部分のみを抽出したものです。


以上、よろしくお願いします。



//-------抽出前--------------
#include "Graphics.h"

#ifdef USE_GOL
#if(GRAPHICS != 0x0306)
#warning "use Graphics Library version 3"
#endif

#if defined __XC32__

extern const char __GOLFontDefault[] ;

const FONT_FLASH GOLFontDefault =
{
(FLASH | COMP_NONE),
};

const char __GOLFontDefault[] =
{

0x00,
0x00,
0x1C, 0x00,
0x7E, 0x00,
0x1B, 0x00,

0x10,
0x94, 0x01, 0x00,
0x10,
0xCA, 0x01, 0x00,
0x11,
0x00, 0x02, 0x00,
0x11,
0x51, 0x02, 0x00,
0x05,
0xA2, 0x02, 0x00,


};
#endif






//-------抽出後-------------

0x00,
0x00,
0x1C, 0x00,
0x7E, 0x00,
0x1B, 0x00,

0x10,
0x94, 0x01, 0x00,
0x10,
0xCA, 0x01, 0x00,
0x11,
0x00, 0x02, 0x00,
0x11,
0x51, 0x02, 0x00,
0x05,
0xA2, 0x02, 0x00,

A 回答 (2件)

提示されている物だけで言うなら、



using System.Text.RegularExpressions;//追加


Regex re = new Regex(@"\{(?<moji>[0-9A-Fa-fx\r\s,]+)\}");

string st = re.Match(richTextBox1.Text).Result("${moji}").TrimStart().TrimEnd();

MessageBox.Show(st);

こんな感じでしょうか?
    • good
    • 0
この回答へのお礼

前略
・さっそくのご教示ありがとうございます。 コンパイルして実行して期待どうりの結果を確認できました。
 正規表現に関しては、はじめて聞く言葉でした。 昨日一日 && と || で四苦八苦していました。

今後ともよろしくお願いします。


以上

お礼日時:2013/11/05 17:49

空行は無理かも知れませんが……正規表現で抜けませんかね?



http://dobon.net/vb/dotnet/string/regexmatch.html

 System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex("0x[0-9a-fA-F][0-9a-fA-F],( |\r\n)", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
 System.Text.RegularExpressions.Match m = r.Match(textBox1.Text);
 textBox2.Text = string.Empty;
 while (m.Success)
 {
  textBox2.Text += m.Value;
  m = m.NextMatch();
 }

こんな感じでしょうか?
正規表現文字列を工夫すれば…"{"から"}"までの間を丸ごと抜き出すことも可能かと思われますが。
"0x[0-9a-fA-F][0-9a-fA-F],"または"\r\n"の1回以上の繰り返しがあって、"{"から始まって"}"で終わるまでの間…みたいな感じでしょうかね。
    • good
    • 0
この回答へのお礼

前略

・さっそく ご教示ありがとうございます。 コンパイル・実行をおこない空行なくデータが抽出できることを確認しました。

  今後ともよろしくお願いします。


以上

お礼日時:2013/11/05 17:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!