LoginSignup
0
0

More than 5 years have passed since last update.

AE extendScript テキスト改行が入ったテキストを一行毎文字数を制限する。

Last updated at Posted at 2018-07-30

今やろうとしている事

スマホアプリ「LINE」のトークのやりとりを映像化する。
bandicam 2018-07-30 14-29-46-757.jpg

その為にはCSVデータリストを作成する。データリストはこんな感じ。
bandicam 2018-07-31 01-30-36-133.jpg

いろいろ平行作業していて、ごちゃごちゃになってきたので、csvから直接値は取ってきてないですがとりあえず、文字数制限と改行とやらをまとめたのがこちらです。

var text = ['サンプルテキストです。私の誕生日はxxxx年x月x日生まれです。\n生別はxです。\rよろしくお願いします。' ];

function txt (target,n){
var result = '';
var temp = target.split(/\r\n|\n|\r/);
var r=new RegExp(".{1,"+n+"}","g");
    for (var i = 0 ; i < temp.length ; i ++){
        result = result +temp[i].match(r).toString().replace(/,/g,'\r')+"\r";
    }
return  result;
}

txt(text[0],15)

結果:
サンプルテキストです。私の誕生
日はxxxx年x月x日生まれで
す。
生別はxです。
よろしくお願いします。

これで15文字毎で"\r"で改行されています。一行毎で正規表現の改行を入れているので、文字数が継続して数えられません。
var spilit = str.match(r).toString().replace(/,/m,'\r');グローバルじゃなくて行単位でのマッチ"m"でもいいかもしれませんね。

これはまだ全角半角の数が一緒なので、そこも改善しようかなと思っています。

追記CSV読み込みもまとめました。

//~ var fileName = File.openDialog("Select csv file","");
//~ var myFile= new File(fileName);
var myFile= new File('~/Desktop/line/testSample/1on1.csv');

//~ ~~~~~~~~CSV Load~~~~~~~~
var result= [];
var myText= '';
if (myFile.open("r")){
    while(!myFile.eof){
        var tempLine = myFile.readln();
        if(countStr(tempLine,"\"")%2 == 0) {
            myText = myText + tempLine+"\n";
        }
        else {
            myText = myText + tempLine+"\r";
            while(true){
                tempLine = myFile.readln();
                if(countStr(tempLine,"\"")%2 == 1) {
                    myText = myText + tempLine+"\n";
                    break;
                }
                else {
                    myText = myText + tempLine+"\r";
                }
            }
        }
    }
    myFile.close();
}

//~ ~~~~~~~~CSV Load~~~~~~~~

var tmp = myText.replace(/"/g,"").split("\n");
for(var i=0;i<tmp.length;++i){
    result[i] = tmp[i].split(',');
}

for (var i  = 0 ; i < result.length; i++){
    $.writeln(i+'行目'+result[i].length);
}

function countStr(str,seq) {
    return str.split(seq).length - 1;
}
$.writeln('titleは ======= '+result[2][1]);
$.writeln('おしゃべりしている人数は======='+result[1][1]+'名です')
for ( var i = 1 ; i <= result[1][1] ; i++ ){
$.writeln('生別は'+result[3][i]);
}

$.writeln('名前=============');
for ( var i = 1 ; i < result[4].length ; i++ ){
$.writeln('名前は'+result[4][i]);
}

$.writeln('レイヤーのインポイントの指定');
for (var i = 5 ; i < result.length; i ++){
$.writeln('timeは = '+result[i][0]); 
}

$.writeln('message');
for (var i = 5 ; i < result.length; i ++){
    for (var j = 1 ; j <= result[1][1] ; j ++){
        if ( j <= result[1][1]-1 ){
            if (!result[i][j] == ""){
            $.writeln('相手のmessage'+'['+i+']'+'['+j+']は= '+txtSpilit(result[i][j],15));
            }
            else{
            false ;
            }
        }
        else{
            if (!result[i][j] == ""){
            $.writeln('自分のmessage'+'['+i+']'+'['+j+']は= '+txtSpilit(result[i][j],18));
            }
            else{
            false;
            }
        }
    }
}

function txtSpilit (target,n){
var result = '';
var temp = target.split(/\r\n|\n|\r/);
var r=new RegExp(".{1,"+n+"}","g");
    for (var i = 0 ; i < temp.length ; i ++){
        result = result +temp[i].match(r).toString().replace(/,/g,'\r')+"\r";
    }
return  result;
}
結果:
0行目3
1行目3
2行目3
3行目3
4行目3
5行目3
6行目3
7行目3
8行目3
9行目3
10行目1
titleは ======= 悲しい系
おしゃべりしている人数は=======2名です
生別は女性
生別は男性
名前=============
名前は名前A
名前は名前C
レイヤーのインポイントの指定
timeは = 1(投稿するタイミング/秒)
timeは = 0.5(投稿するタイミング/秒)
timeは = 2(投稿するタイミング/秒)
timeは = 0.2(投稿するタイミング/秒)
timeは = 5(投稿するタイミング/秒)
timeは = 
message
相手のmessage[5][1]は= サンプルテキストです。私の誕生
日はxxxx年x月x日生まれで
す。
生別はxです。
よろしくお願いします。
自分のmessage[6][2]は= 初めての投稿です
相手のmessage[7][1]は= これは1対1のメッセージのやり
とりです
自分のmessage[8][2]は= どうも!
自分のmessage[9][2]は= サンプルテキストです。私の誕生日はx
xxx年x月x日生まれです。
生別はxです。
よろしくお願いします。
結果 : false

ちょっと確認用として出している部分もあるのでごちゃごちゃしてますが、データの取得はほぼ完成しました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0