72920


a■ああ■いい……  
b■うう■ええ……  
c■おお■かか……

というデータをマクロで

a  
aああ  
aいい……  
b  
bうう  
bええ……  
c  
cおお  
cかか……

に変換したいのですが、区切りの「■」の数は不定で、「a」や「ああ」などの長さも不定です。  
ご教示、よろしくお願いいたします。


CC BY-SA 4.0
2020-12-26T01:21:53.183
72893
2020-12-28T13:41:36.497
43123
question
emeditor
マクロでヘッダーを割り振る方法（複数行）

[code]

    re1 = editor.regex;
    re1.Engine = eeExFindRegexOnigmo;
    re1.Pattern = "^(.*?)(■.*)$";
    for( var yLine = document.GetLines(); yLine > 0; yLine-- ){
        line = document.GetLine( yLine , eeGetLineWithNewLines );
        m = re1.Find( line );
        if( ! m ) continue;
    
        tag = m.Item(1).Value;
        str = m.Item(2).Value;
        re2 = editor.regex;
        re2.Engine = eeExFindRegexOnigmo;
        re2.Pattern = "■+([~■]*)";
        re2.Global = true;
        str = re2.Replace( str, "\n" + tag + "\\1" );
        document.selection.SetActivePoint( eePosLogical, 1, yLine );
        document.selection.SelectLine();
        document.selection.Text = tag + str + "\n";
    }
    
[/code]


CC BY-SA 4.0
2020-12-27T10:55:52.127
72920
2020-12-27T10:55:52.127
40304
72893
answer


split() を使えばもっとシンプルでした

[code]

    for( var yLine = document.GetLines(); yLine > 0; yLine-- ){
        var para = document.GetLine( yLine ).split( /■+/ )
        if( para.length <= 1 )  continue;
    
        var tag = para[0];
        var str = tag + "\n";
        for( var i = 1; i < para.length; i++ ){
            str += tag + para[i] + "\n";
        }
    
        document.selection.SetActivePoint( eePosLogical, 1, yLine );
        document.selection.SelectLine();
        document.selection.Text = str;
    }
    
[/code]


CC BY-SA 4.0
2020-12-28T13:41:36.497
72948
2020-12-28T13:41:36.497
40304
72893
answer