• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テキストデータから文字列を取り出したい)

記事のテキストデータから文字列を抽出する方法

このQ&Aのポイント
  • 昔使っていたブログのデータをまとめたテキストファイルから、必要な文字列を取り出す方法をご紹介します。
  • Javascriptを使って、記事ごとに必要な文字列のみを取り出し、CSV形式に整形することができます。
  • 改行部分はHTMLのタグである<br>に置き換えることで、テキストファイルの改行を反映させることもできます。

質問者が選んだベストアンサー

  • ベストアンサー
  • think49
  • ベストアンサー率59% (285/482)
回答No.2

CSVファイルを生成する場合、「改行」(\r\n)「ダブルクォート(")」「カンマ(,)」の3文字の扱いに気を付ける必要があります。 改行は <br> に変換するようですが、残り2文字のエスケープに注意してください。 https://jsfiddle.net/67byzuho/ 2列目で [PRIMARY CATEGORY], [CATEGORY] のどちらを期待しているのか不明ですが、[CATEGORY] としました。 Re: cnkozo さん

cnkozo
質問者

お礼

遅くなり、申し訳ございませんでした。ありがとうございました!

その他の回答 (1)

回答No.1

おぶじぇくとしこうには、かいとうがつくの にこれには つきませんね。 しつもんのかいとうがつくまでに、てさぎょうでおわっているかもしれませんね。 こうきのうな えでぃたなら 正規表現でへんかんできそうなのですが。 ぜんかくくうはくもじは、すべてはんかくくうはくもじに ちかんしてください だぶるくぉーとで かこまなくてもだいじょうぶ? <!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>

cnkozo
質問者

お礼

遅くなり、申し訳ございませんでした。ありがとうございました!こちらもできました。

関連するQ&A

専門家に質問してみよう