「平成」を感じるもの

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

よろしくお願いします。

A 回答 (4件)

すでに回答はでているようですが…



サンプルです。
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>
    • good
    • 0

split にあたえる正規表現を()でくくると、区切りに使ったものも


結果の配列に含まれるようになります。
"あいうえお。かきくけこ。さしすせそ".split(/(。)/)

"あいうえお"
"。"
"かきくけこ"
"。"
"さしすせそ"
のように分割されます。

まあつなげる手間があるのであまりうれしくはありませんが。
    • good
    • 0

split()メソッドで配列に格納した後、全要素にfor in 構文で"。

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

alert( "正規表現でも勉強しようよ。

すっごく奥が深いよ~。それでつまづいたら聞く。".match(/.*?。/gm));
    • good
    • 0

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


おすすめ情報