こういうことがやりたくて書いたコード
左のテキストエリアに以下のようなテキストを貼り付けると
右のテキストエリアに一文ずつ改行して表示される。
Practice makes the impossible possible. Strike while the iron is hot.
Nothing comes of nothing.
デモ
https://script.google.com/macros/s/AKfycbxxqRidOTAUssCiWZBr-SxBriaB80i2MkLWEECL87ZtlsPVVRun/exec
今回書いた正規表現
var pattern = /.*?(?=[.!?] ).|[^。!?\n]*.|.*$/g;
コード.gs
function doGet() { return HtmlService.createHtmlOutputFromFile("index"); } |
意訳この機能がやること 指定したHTMLファイルを表示する |
index.html
<!DOCTYPE html> <html> <head> <style> textarea { width: 40vw; height: 80vh; } </style> </head> <body> <textarea id="ta"></textarea> <textarea id="ta2"></textarea> <script> elem("ta").onkeyup = taKeyup; function elem(id) { return document.getElementById(id); } function taKeyup() { var taStr = elem("ta").value; var singleSenteceArray = splitToSingleSentece(taStr); console.log(singleSenteceArray); elem("ta2").value = singleSenteceArray } function splitToSingleSentece(str) { var pattern = /.*?(?=[.!?] ).|[^。!?\n]*.|.*$/g; var sentences = str.match(pattern); var singleSentences = ''; for(var i = 0; i < sentences.length; i++) { var sentence = sentences[i].trim(); singleSentences += sentence + '\n'; } return singleSentences } </script> </body> </html> |
備忘録
試しながら書いた正規表現
最初はこんな感じのを書いて、試しながらやってみた(これだと全然だめ)
.!?以外でいけそうな気がしたけれど、
3.14などの小数点やA.M.などのピリオドでも改行してしまう
試しながら書いた正規表現
最初はこんな感じのを書いて、試しながらやってみた(これだと全然だめ)
var pattern = /.*\. *?.|.*\! *?.|.*\。*?.|.*\! *?.|.*/g;
.!?以外でいけそうな気がしたけれど、
3.14などの小数点やA.M.などのピリオドでも改行してしまう
var pattern = /[^.!?]*./g;