2007年02月08日

英文を文ごとに分ける JavaScript

複数の文からなっている英文を一文ごとに分けて、配列にする JavaScript を書いてみた。すでに、ありそうだけど取り合えず。

文末を判定する正規表現はGNU Emacs Lispリファレンスマニュアル: 探索と一致を参考にさせてもらいました。参考というかそのままな感じですが

function sentenceSeparate(str) {
  var result = [];
  // "||"をエスケープ
  str = str.replace(/\|\|/g, "\\\|\\\|");
  str = str.replace(/([\.\?!][\]\"\'\)\}]*)($| $|\s|\s\s*)/g, "$1$2\|\|");
  var lines = str.split(/\|\|/);
  // エスケープしたのを戻す
  for (var i = 0; i < lines.length; i++) {
    if (lines[i]) result.push(lines[i].replace(/\\\|\\\|/g, "\|\|"));
  }
  return result;
}

まだあまり試していないのでおかしい場合もあるかも知れないです。

追記(2006-03-01)

良く考えたらエスケープとか必要なく、単純に英語で使用されない文字で区切るようにすればいいのではないかと思ったので書き直してみました。

function sentenceSeparate(str) {
  var result = [];
  str = str.replace(/([\.\?!][\]\"\'\)\}]*)($| $|\s|\s\s*)/g, "$1$2|");
  str = str.replace(/^|||$/g, "");
  result = str.split(/|/);
  return result;
}


posted by knit at 13:11 | Comment(2) | TrackBack(0) | JavaScript
この記事へのコメント
為になる記事ありがとうございます
よければサンプルの実行例も出して頂けませんでしょうか?
試してみたけど出来なかったので。汗
Posted by あつふみ at 2011年05月26日 18:03
為になる記事ありがとうございます
よければサンプルの実行例も出して頂けませんでしょうか?
試してみたけど出来なかったので。汗
Posted by あつふみ at 2011年05月26日 18:04
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバック