Skip to main content
Inspiring
April 23, 2012
Answered

Finding the end of line

  • April 23, 2012
  • 1 reply
  • 7641 views

Is It possible to find and change a character in the end of each line from a block text?

I know Indesign GREP can't do this, GREP only finds the end of paragraph, not lines.

I understand this is a problem because every time the text frame is modified, you have another character being changed.

Is It possible to do this with a script?

I have attached an image of what I would like to do.

The text in the image is Hebrew (R2L language) and the end of line is in the left.

Any help would be great.

Sami

This topic has been closed for replies.
Correct answer Jump_Over

Thank's again Ariel,

I am a beginner in Java Script and I don't know what I am doing wrong.

Please take a look:

main();

function main(){

          mySetup();

          mySnippet();

          myTeardown();

}

function mySetup(){

}

function mySnippet(){

          if (app.documents.length != 0){

                    if (app.selection.length == 1){

                              switch (app.selection[0].constructor.name){

                                        case "InsertionPoint":

                                        case "Character":

                                        case "Word":

                                        case "TextStyleRange":

                                        case "Line":

                                        case "Paragraph":

                                        case "TextColumn":

                                        case "Text":

                                        case "Story":

                                                  myProcessText(app.selection[0]);

                                        break;

                                        case "TextFrame":

                                                  myProcessText(app.selection[0].texts.item(0));

                                                  break;

                                        default:

                                                  alert("The selected object is not a text object. Select some text and try again.");

                                                  break;

                              }

                    }

                    else{

                              alert("Please select some text and try again.");

                    }

          }

}

function myTeardown(){

}

function myProcessText(myTextObject){

}

var myDocument = app.documents.item(0);

var myPage = myDocument.pages.item(0);

var myTextFrame = myPage.textFrames.item(0);

var myTextObject = myTextFrame.parentStory.characters.item(0);

var myStory = myDocument.stories.item(0);

var myStringArray = myTextFrame.lines.everyItem().contents;

myPara = app.selection[0];

myLines = myPara.lines;

for (var i =0; i<myLines.length; i++){

    myFinds = myLines.findText(ת);

myFinds[-1].contents = "z";

}

Sami


Hi,

Assuming your text is inside one or more text frames which are connected. Select one of them and run this:

-------------

myLines = app.selection[0].parentStory.lines;

for (k=0; k<myLines.length; k++){

     if(myLines.characters[-1] == "\r")                         // if there is an end of paragraph

          myLines.characters[-2].contents = "z";          // change a second last character to "z"

     else myLines.characters[-1].contents = "z";     // otherwise change a last character to "z"

}

------------

This is just for show the way.

Hope you step into

1 reply

TᴀW
Brainiac
April 23, 2012

Well, if you've got some text (paragraphs, story, whatever):

myText.lines.characters[-1]

will get you the last character on the line.

If you want to change what it is,

myText.lines.characters[-1].contents = "Z"

etc.

Ariel

Inspiring
April 23, 2012

Thank you Ariel, but I am receiving this message:

Object does not support the property or method 'characters'

Sami

Jump_Over
Jump_OverCorrect answer
Brainiac
April 24, 2012

Thank's again Ariel,

I am a beginner in Java Script and I don't know what I am doing wrong.

Please take a look:

main();

function main(){

          mySetup();

          mySnippet();

          myTeardown();

}

function mySetup(){

}

function mySnippet(){

          if (app.documents.length != 0){

                    if (app.selection.length == 1){

                              switch (app.selection[0].constructor.name){

                                        case "InsertionPoint":

                                        case "Character":

                                        case "Word":

                                        case "TextStyleRange":

                                        case "Line":

                                        case "Paragraph":

                                        case "TextColumn":

                                        case "Text":

                                        case "Story":

                                                  myProcessText(app.selection[0]);

                                        break;

                                        case "TextFrame":

                                                  myProcessText(app.selection[0].texts.item(0));

                                                  break;

                                        default:

                                                  alert("The selected object is not a text object. Select some text and try again.");

                                                  break;

                              }

                    }

                    else{

                              alert("Please select some text and try again.");

                    }

          }

}

function myTeardown(){

}

function myProcessText(myTextObject){

}

var myDocument = app.documents.item(0);

var myPage = myDocument.pages.item(0);

var myTextFrame = myPage.textFrames.item(0);

var myTextObject = myTextFrame.parentStory.characters.item(0);

var myStory = myDocument.stories.item(0);

var myStringArray = myTextFrame.lines.everyItem().contents;

myPara = app.selection[0];

myLines = myPara.lines;

for (var i =0; i<myLines.length; i++){

    myFinds = myLines.findText(ת);

myFinds[-1].contents = "z";

}

Sami


Hi,

Assuming your text is inside one or more text frames which are connected. Select one of them and run this:

-------------

myLines = app.selection[0].parentStory.lines;

for (k=0; k<myLines.length; k++){

     if(myLines.characters[-1] == "\r")                         // if there is an end of paragraph

          myLines.characters[-2].contents = "z";          // change a second last character to "z"

     else myLines.characters[-1].contents = "z";     // otherwise change a last character to "z"

}

------------

This is just for show the way.

Hope you step into