• ベストアンサー

句点“。”で区切り、“。”も含めた上で配列に格納したい

句点“。”で区切って“。”も含めた上で、一文一文配列に格納したのですが、なにかいい方法ありますか? Stringオブジェクトのsplit()メソッドは、句点“。”を含まず、配列に格納してしまうため、使用したくありません。 よろしくお願いします。

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.3

すでに回答はでているようですが… サンプルです。 nullストリングが拾われた場合の処置など、どちらの場合も例外処理が必要になりそうですね。(サンプルは適当に作っているので、ロジックの正確さについてはご自身で再確認してください) <html> <body> <script> var sample="サンプルだから。細切れの。文章なのさ。わかるかな?"; //---splitの例 var s=sample.split('。'); for (var i=0; i<s.length-1; i++){s[i]+='。';} if (!s[s.length-1]) s.splice(s.length-1,1); //---正規表現の例 var r=sample.match(/.*?。/gm); if(RegExp.rightContext) r[r.length]=RegExp.rightContext; //---結果の表示 sample='[ split ] (length='+ s.length + ')<br>'; for (i=0; i<s.length; i++){sample+=s[i] + '<br>';} sample+='<p>[ RegExp ] (length=' + r.length + ')<br>'; for (i=0; i<r.length; i++){sample+=r[i] + '<br>';} document.write(sample); </script> </body> </html>

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.4

split にあたえる正規表現を()でくくると、区切りに使ったものも 結果の配列に含まれるようになります。 "あいうえお。かきくけこ。さしすせそ".split(/(。)/) で "あいうえお" "。" "かきくけこ" "。" "さしすせそ" のように分割されます。 まあつなげる手間があるのであまりうれしくはありませんが。

すると、全ての回答が全文表示されます。
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

split()メソッドで配列に格納した後、全要素にfor in 構文で"。"を つけてしまう手もあります。 No1様回答の正規表現利用とどっちが処理が速いか、ベンチマークすると 面白いかも。 ところで、私も正規表現が苦手なのですが、 (/.*?[。。]/gm)みたいに全角'。'と半角'。'は区別不要なのでしょうか? (/[。。]$/gm)ではだめなのでしょうか?

すると、全ての回答が全文表示されます。
noname#84373
noname#84373
回答No.1

alert( "正規表現でも勉強しようよ。すっごく奥が深いよ~。それでつまづいたら聞く。".match(/.*?。/gm));

すると、全ての回答が全文表示されます。

関連するQ&A