Adobeソフト編 指定文字数でテキストファイルを分割する

140文字と言えばTwitter(ツイッター)を思い浮かべる人が多いでしょう。140文字までしか投稿できなくても、日本語の場合漢字や顔文字のおかげで多彩な文章を表現することができます。とは言っても長文になると140文字では収まりません。あらかじめ、エディタなどに文章を書いておいて、それを投稿するような場合自動的に140文字で分割してくれると楽です。Webで探せば、そのようなサービスがありますが、ここでは任意の文字数で分割し個別のファイルとして保存するスクリプトを載せておきます。
まず、以下のスクリプトは単純に140文字で分割するものです。


(function(){
var splitNum = 140; // 分割文字数
var fileObj = File.openDialog("140文字に分割するテキストファイルを選択してください");
if (!fileObj){ return; } // キャンセルボタンが押された場合は何もしない
var flag = fileObj.open("r");
if (!flag){
alert("ファイルが開けません");
return;
}
var saveFolder = Folder.selectDialog("保存先のフォルダを指定してください");
if (!saveFolder){ return; } // キャンセルボタンが押された場合は何もしない
// 分割処理
var count = 1; // 出力するファイルの番号を入れるカウンタ
while(!fileObj.eof){
// ファイルから一行だけ読み込み
var srcText = fileObj.readln();
if ((srcText == String.fromCharCode(13)) ||
(srcText == String.fromCharCode(10))){ continue; } // 改行コードの場合は何もしない
// 140文字以上の場合
for(var i=0; i<srcText.length; i+=splitNum){
var str = srcText.substr(Math.floor(i), splitNum);
var saveFile= new File(saveFolder.fsName +"/"+count+".txt");
flag = saveFile.open("w");
if (!flag){
alert("ファイルが書き込めません");
return;
}
// ファイルに書き出し
saveFile.writeln(str);
count = count + 1;
saveFile.close();
}
}
fileObj.close();
})();

このスクリプトでは句読点などを無視して分割してしまいます。できれば句読点を区切りとして140文字に近い状態で分割してほしいところです。なるべく140文字に近い句読点で分割するのが以下のスクリプトです。

(function(){
var splitNum = 140; // 分割文字数
var fileObj = File.openDialog("140文字に分割するテキストファイルを選択してください");
if (!fileObj){ return; } // キャンセルボタンが押された場合は何もしない
var flag = fileObj.open("r");
if (!flag){
alert("ファイルが開けません");
return;
}
var saveFolder = Folder.selectDialog("保存先のフォルダを指定してください");
if (!saveFolder){ return; } // キャンセルボタンが押された場合は何もしない
// 分割処理
var count = 1; // 出力するファイルの番号を入れるカウンタ
while(!fileObj.eof){
// ファイルから一行だけ読み込み
var srcText = fileObj.readln();
if ((srcText == String.fromCharCode(13)) ||
(srcText == String.fromCharCode(10))){ continue; } // 改行コードの場合は何もしない
// 140文字以上の場合
// 加算する文字数
var addNum = splitNum; // 分割文字数を設定
for(var i=0; i<srcText.length; i+=addNum){
var saveFile= new File(saveFolder.fsName +"/"+count+".txt");
flag = saveFile.open("w");
if (!flag){
alert("ファイルが書き込めません");
return;
}
var str = srcText.substr(Math.floor(i), splitNum);
if (str.length == splitNum){ // 140文字オーバーの場合
var k1 = str.lastIndexOf("。");
var k2 = str.lastIndexOf("、");
var k = k1;
if (k2 > k1){ k = k2; } // どちらか末尾にある方を選択
if (k == -1){ k = splitNum; } // 句読点がなければ分割文字数で
str = str.substr(0, k+1);
addNum = str.length;
}else{
addNum = splitNum;
}
// ファイルに書き出し
saveFile.writeln(str);
count = count + 1;
saveFile.close();
}
}
fileObj.close();
})();

分割する文字数を変更したい場合は

var splitNum = 140; // 分割文字数

の140の値を変更してください。

[サンプルをダウンロード]