- ベストアンサー
記事のテキストデータから文字列を抽出する方法
- 昔使っていたブログのデータをまとめたテキストファイルから、必要な文字列を取り出す方法をご紹介します。
- Javascriptを使って、記事ごとに必要な文字列のみを取り出し、CSV形式に整形することができます。
- 改行部分はHTMLのタグである<br>に置き換えることで、テキストファイルの改行を反映させることもできます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
CSVファイルを生成する場合、「改行」(\r\n)「ダブルクォート(")」「カンマ(,)」の3文字の扱いに気を付ける必要があります。 改行は <br> に変換するようですが、残り2文字のエスケープに注意してください。 https://jsfiddle.net/67byzuho/ 2列目で [PRIMARY CATEGORY], [CATEGORY] のどちらを期待しているのか不明ですが、[CATEGORY] としました。 Re: cnkozo さん
その他の回答 (1)
- babu_baboo
- ベストアンサー率51% (268/525)
おぶじぇくとしこうには、かいとうがつくの にこれには つきませんね。 しつもんのかいとうがつくまでに、てさぎょうでおわっているかもしれませんね。 こうきのうな えでぃたなら 正規表現でへんかんできそうなのですが。 ぜんかくくうはくもじは、すべてはんかくくうはくもじに ちかんしてください だぶるくぉーとで かこまなくてもだいじょうぶ? <!DOCTYPE html> <meta charset="utf-8"> <title>高機能なエディタなら…</title> <style > </style> <body> <textarea rows="15" cols="90" id="A"> -------- AUTHOR: hogehoge TITLE: 記事A STATUS: Publish ALLOW COMMENTS: 0 CONVERT BREAKS: __default__ ALLOW PINGS: 0 PRIMARY CATEGORY: news CATEGORY: news DATE: 02/08/2014 06:17:55 AM ----- BODY: 記事一個目。 ほげほげ ----- EXTENDED BODY: ----- EXCERPT: ----- KEYWORDS: ----- -------- AUTHOR: hogehoge TITLE: 記事B STATUS: Publish ALLOW COMMENTS: 0 CONVERT BREAKS: __default__ ALLOW PINGS: 0 PRIMARY CATEGORY: nikki CATEGORY: nikki DATE: 02/09/2014 07:45:04 PM ----- BODY: 記事2個目。 <img src="hoge.jpg"> ほげほげ ----- EXTENDED BODY: ----- EXCERPT: ----- KEYWORDS: ----- -------- AUTHOR: hogehoge TITLE: 記事C STATUS: Publish ALLOW COMMENTS: 0 CONVERT BREAKS: __default__ ALLOW PINGS: 0 PRIMARY CATEGORY: news CATEGORY: news DATE: 02/09/2014 07:51:34 PM ----- BODY: 記事3個目。ほげほげ ----- EXTENDED BODY: ----- EXCERPT: ----- KEYWORDS: ----- </textarea><br> <input type="button" value="conv" onclick="hoge();"> <hr> <textarea rows="15" cols="90" id="B"> </textarea> <script> function addDQ (str) { return '"' + str + '"'; } function hoge () { var t = document.querySelector ('#A').value; var b = document.querySelector ('#B'); var rst = []; var rec = []; var cr = '\\r|\\n|\\r\\n'; var CR = '(?:' + cr + ')*'; var sp = '\\s?'; var splt8 = '\\-{8}' + CR; var splt5 = '\\-{5}' + CR; var typeA = sp + '.*?' + CR; var typeB = sp + '(.*?)' + CR; var typeC = sp + '((?:.|' + cr + ')*?)' + CR; var typeE = sp + '(?:.|' + cr + ')*?' + CR; var pattern = [ splt8, 'AUTHOR:' + typeA, 'TITLE:' + typeB, 'STATUS:' + typeA, 'ALLOW COMMENTS:' + typeA, 'CONVERT BREAKS:' + typeA, 'ALLOW PINGS:' + typeA, 'PRIMARY CATEGORY:' + typeA, 'CATEGORY:' + typeB, 'DATE:' + typeB + splt5, 'BODY:' + CR + typeC + splt5, 'EXTENDED BODY:' + CR + typeE + splt5, 'EXCERPT:' + CR + typeE + splt5, 'KEYWORDS:' + CR + typeE + splt5, typeE ].join (''); var reg = new RegExp (pattern, 'g'); for (rec = []; rec = reg.exec (t); ) { rec.shift (); rst.push (rec); } b.value = rst.map (function (a) { a[3] = a[3].replace (/(\r|\n|\r\n)/g, '<br>'); return a.map (addDQ).join(', '); }).join ('\n'); } </script>
お礼
遅くなり、申し訳ございませんでした。ありがとうございました!こちらもできました。
お礼
遅くなり、申し訳ございませんでした。ありがとうございました!