テキスト処理のアルゴリズムについて
- テキスト処理のアルゴリズムについてご教示下さい。
- テキスト処理のプログラミング(アルゴリズム)について解説してください。
- テキスト処理のアルゴリズムを効率的に実装する方法について教えてください。
- ベストアンサー
テキスト処理のアルゴリズムについて
テキスト処理のプログラミング(アルゴリズム)についてご教示下さい。 以下に示します。 ----------------------- hogehoge xxxxxxxxx example.com Header_1 color RED Header_2 color BLACK type M Header_3 color GREEN weight 40 type L Header_4 color GREEN END afterhogehoge zzzzxxxxxyyyy ----------------------- ↑このようなテキストを・・・・ ↓こう並べ替えたいのです。 ----------------------- Header_1,color RED,, Header_2,color BLACK,,type M Header_3,color GREEN,weight 40,type L Header_4,color GREEN,, ----------------------- ポイントは二つあって、以下の通りとなります。 a)Header_[1234]に関するcolor、weight、typeといった情報は、次の"Header_"で始まる行までに全て記述される。 b)並べ替え後の書式は、必ず第2フィールドがcolor、第3フィールドがweight、第4フィールドがtypeでなくてはならない。 c)並べ替え前の、先頭行からHeader_1で始まる行までは削除 d)同じく、END(フラグとします)で始まる行以降を削除 当方、PowerShell3.xで苦戦しているのですが、ご回答例は別の言語でも構いません。(出来れば ライトウェートな言語のいずれかで・・・)
- kenokabe2
- お礼率66% (4/6)
- その他(プログラミング・開発)
- 回答数3
- ありがとう数14
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
正規表現を使えばかなり出来そうに思います。 Rubyでやっていましたが、変数strに全文を読み込んだとして str.scan(/^Header.+?(?=^Header|END)/m) でHeaderからHeaderまたはENDの前までを切り分けられます。 ["Header_1\ncolor RED\n", "Header_2\ncolor BLACK\ntype M\n", "Header_3\ncolor GREEN\nweight 40\ntype L\n", "Header_4\ncolor GREEN\n"] これを1要素ずつ処理すれば簡単にできます。 他の方法では、YAMLに変換して読み込むのも簡単だと思います。次の形式に変換できれば Header_1: color: RED Header_2: color: BLACK type: M Header_3: color: GREEN weight: 40 type: L Header_4: color: GREEN (要するにHeader以外を字下げして、行始めの最初の単語の後ろにコロンを入れる、表示の関係で全角空白で字下げしていますが、実際には半角空白2つ程度で) YAML.load(str)で読み込むと {"Header_1"=>{"color"=>"RED"}, "Header_2"=>{"color"=>"BLACK", "type"=>"M"}, "Header_3"=>{"color"=>"GREEN", "weight"=>40, "type"=>"L"}, "Header_4"=>{"color"=>"GREEN"}} このように変換できます。 複雑な構造をしている場合にはこちら方が簡単なことが多いです。 質問欄の程度なら、前者かな。
その他の回答 (2)
- kmee
- ベストアンサー率55% (1857/3366)
Header だったら 既存のデータがあれば、$header, $color,$weight,$type を出力 $headerを記憶, $color,$weight,$type をリセット color,weight,typeだったら それぞれを記録 ENDだったら 既存のデータがあれば、$header, $color,$weight,$type を出力 終了 一回きりの捨てプログラムなら、こんな感じかな 汎用性を持たせるなら $header, $color,$weight,$type を辞書型リストを使ったり、 出力をサブルーチンにしたり といったところです。
お礼
まだピンときていませんが、やってみます。 ありがとうございます。
- kamikami30
- ベストアンサー率24% (812/3335)
一行ずつテキスト読み込んで正規表現で判定して処理をわければいいかと。
お礼
やってみます。 ありがとうございます。
関連するQ&A
- ループ処理を抜けた時点での処理回数を表示したい
今、以下のような「green」が配列の何番目にあるのか調べるプログラムを考えています。 具体的な処理としては、配列の値を順番に調べて「green」を見つけたらループをぬけて何番目にあったかを表示する、といった処理になります。 ただ、現時点ではループをぬけた時何番目だったのかを取得できないでいます。 $numを取得して表示するにはどのような処理を行えばよいでしょうか。 解説していただけると幸いです。 ---プログラム--- class hoge{ function hoge(){ $this->color = array("red", "blue", "pink", "white", "black", "gold", "yellow"...,"green",...); } function test(){ for($i = 0;$i < count($this->color);$i++){ if($this->color[$i] == 'green'){ echo $this->color[$i]."\n"; break;###ここでループをぬける } } echo "緑は${num}番目"; } } $a = new hoge(); $a->test(); ---
- ベストアンサー
- PHP
- CSSで、テキストのみの背景色を指定するには?
CSSで、テキストのみの背景色を指定するには? CSSを使って、 h1 { color: orange; background: green; } とすると、<h1>タグで示されたテキストの行の背景色が緑色になりますが、 行全体ではなく、テキストのみの背景色を指定するにはどうすればよいでしょうか?
- 締切済み
- その他(ソフトウェア)
- javaのカラーについて
今日は g2.setColor(Color.GREEN);の色指定は、 BLACK, BLUE, CYAN, DARK GRAY, GRAY, GREEN, LIGHT GARAY, ORANGE, RED. WHITE, YELLOW とあると思いますが、これ以外の設定は可能ですか。 コメントの程、宜しくお願いします。
- ベストアンサー
- Java
- float テキストの右下寄せ
MTでブログを作っています。テンプレートを変更したのですが、躓いています。 width:800px; height:287px; のサイズのbackgroundの上で(中で?)右下寄せにブログタイトルと検索ボックスを表示させたいのですがうまくいきません。 かなりの初心者で独学のみでしています。どこが何なのかよく理解できていないのでheaderの部分をすべて貼ります。 /* header */ /* -------------------------------------------------------- */ h1 { width:800px; font-size:80%; font-weight:normal; color:#666666; text-align:left; margin:0 auto; padding:15px 0 0 0; } #header { width:800px; height:287px; color:#333322; text-align:left; margin:0 auto; background:#eeeedd; background-image: url(http://■■■.net/images/●●●.gif); border-top:solid 1px #bbbb99; border-left:solid 1px #bbbb99; border-right:solid 1px #bbbb99; border-bottom:0; } #header div.lbox { width:510px; float:left; } #header div.lbox p { font-size:180%; font-weight:bold; line-height:120%; margin:8px 0 5px 10px; } #header div.rbox { width:170px; padding:15px 0 0 0; float:right; } #header div.rbox input { vertical-align:top; } #header div.rbox input.box { width:120px; margin:0 5px 0 0; } #header a:link , #header a:visited { color:#333322; background:#eeeedd; } #header a:hover , #header a:active { color:#666655; background:#eeeedd; } 現在、左上にブログタイトル、右上に検索ボックス(その下に検索ボタン)があります。 これを横並びに右下へ持っていきたいのですが・・・。 それと、タイトルテキストの部分がeeeedd色の背景の上に黒字になっているのですが、eeeedd色でなくbackgroundの画像に透過させるにはどうすればよいのでしょうか??
- ベストアンサー
- ブログ
- PHPを使ったPOSTについて教えてください。
<body> <form action="" method="post"> <select id="list" name="list" > <option value="">選択してください</option> <option value="ichigo">いちご</option> <option value="orange">オレンジ</option> </select> <input type="text" size="30" id="word" name="word" > <input type="submit" value="検索"> </form> <?php $array = array(); $array['green'] = 'グリーン'; $array['red'] = 'レッド'; if (isset($_REQUEST['word'])) { $array ['key']=$_REQUEST['word']; } if (isset($_REQUEST['list'])) { $array ['List']=$_REQUEST['list']; } print_r($array); ?> </body> これを表示した場合、はじめのページでは Array ( [green] => グリーン [red] => レッド ) と表示されますが、フォームを実行すると、このように表示されます。 Array ( [green] => グリーン [red] => レッド [key] => [List] => ) これを、もしkeyやListの値が何も入力されなかった場合、listで言えば「選択してください」が選択されで実行された場合、[key] =>や [List] =>を表示しないと言うことはできますか? 例えばlistをデフォルトの「選択してください」のまま選択せず、テキスト欄に「テキスト」と入力したら、 Array ( [green] => グリーン [red] => レッド [key] => テキスト) とこのように[List] =>は省きたいです。 そのためにissetを使ったつもりでしたが、うまくいきませんでした。 どうしたら良いでしょうか?教えてください、よろしくお願いします。
- 締切済み
- PHP
- MonsterEnergy皆さんは何がすきか?
zzr1400を買おうと思う学生さんですが、MonsterEnergyというものを知りました。 今度かったらステッカーを貼ろうと思うのですが、皆さんはどのタイプが一番カッコイイと思いますか? ・BlackのzzrにGreenのMonsterEnergy ・BlackのzzrにRedのMonsterEnergy ・Greenのzzrに黒い部分だけGreenのMonsterEnergy ・GreenのzzrにRedのMonsterEnergy 自分は勝手な想像ですがGreenのzzrにRedのMonsterEnergyのステッカーをつけたら普通のタイプとは違ってカッコイイと思ってます。回答お願いします!
- ベストアンサー
- バイク・原付自転車
- テキストボックスの背景色について
<html> <body> <form name="form1"> <input type="text" value="よろしく" name="text1"> <script language="javascript"> document.form1.text1.style.background-color = "green"; </script> </form> </body> </html> これはテキストボックスの背景色をグリーンにするプログラムなんですがうまくいきません。どこが間違っているのか指摘してください。
- ベストアンサー
- JavaScript
- テキスト文がhtmlであらわれてしまうのはなぜ?
テキスト文がhtmlであらわれてしまうのはなぜ? メモ帳に以下のような記述をして、 aaa.txtとして保存しました。 html上で aaa.txtにリンクを貼りました。 html上でリンク付けしたaaa.txtを開くと、テキスト文ではなく、htmlに変わってしまいます。つまり、下の「文字にホバーをかける」が実際にホバーがかかった状態ででてきてしまうのです。 これをテキスト文だけにするにはどうしたらいいのでしょうか? ================================================= ホバーをかける(テキストにマウスを乗せると色が変わる ) <SPAN STYLE="font-size:24pt" onMouseOver="window.event.srcElement.style.color = 'red'" onMouseOut="window.event.srcElement.style.color = 'black'"> 文字にホバーをかける </SPAN>
- ベストアンサー
- JavaScript
- C# リッチテキストボックスの文字色
richTextBox_pro.Text = "aaaaaaaaaaaaaaaaaaaaaaaa"; richTextBox_pro.Text += "end"; richTextBox_pro.Select(richTextBox_pro.TextLength - 3, 3); richTextBox_pro.SelectionColor = Color.Black; のようにして、最後に付け加えた end の文字だけ色をかえているのですが、 選択された状態になってしまいます。 マウスでドラックしている状態です。 これを解除した状態で文字色をかえるにはどうしたらいいのでしょうか。
- ベストアンサー
- Microsoft ASP
お礼
うまくいきそうです。 あと、YAMLは調べてみたところ、理想的なような気がするので、そのうちこれでやってみます。 ありがとうございます。