こういうことがやりたくて書いたコード
左のテキストエリアに以下のようなテキストを貼り付けると
右のテキストエリアに一文ずつ改行して表示される。
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;