Skip to main content
Known Participant
July 22, 2024
Answered

Batch adding line break behind every comma of text layer

  • July 22, 2024
  • 12 replies
  • 1238 views

I've complete some psd files which contained a lot of text layers, but I forgot to separate them into lines ( they must be broken at each comma & dot).

For example:

"Lorem ipsum dolor sit amet, consectetur adipiscing elit"

The result must be

"Lorem ipsum dolor sit amet,

consectetur adipiscing elit"

Tried with Find and replace tool but I don't know which line break symbol is.

Does anyone have any idea to help me?

This topic is closed to new replies. Start a new post to keep the conversation going.
Correct answer Stephen Marsh

If only Photoshop was InDesign when it came to text!

 

I don't know if this is possible using the standard Edit > Find and Replace Text... command.

 

It is possible to script using a regular expression based find/replace, however, if you have different text attributes (sizes, colours etc) then the following code may not work correctly (this script changes all text layers from comma+space to comma+return):

 

/*
Text Replace Comma Space for Comma Return in All Text Layers and Groups.jsx
v1.0 - 25th July 2024, Stephen Marsh
https://community.adobe.com/t5/photoshop-ecosystem-discussions/batch-adding-line-break-behind-every-comma-of-text-layer/m-p/14753971
*/

#target photoshop

if (app.documents.length > 0) {
    var doc = app.activeDocument;
    processLayersAndGroups(doc.layers);
} else {
    alert("A document must be open to run this script!");
}

function changeTextContents(layer) {
    // Check if the layer is a text layer
    if (layer.kind == LayerKind.TEXT) {
        // Regular expression to change comma+space to comma+return
        layer.textItem.contents = layer.textItem.contents.replace(/\, /g, ',\r');
    }
}

function processLayersAndGroups(layers) {
    // Recursively process the root/top-level layers
    for (var i = 0; i < layers.length; i++) {
        var layer = layers[i];
        if (layer.typename == "ArtLayer") {
            changeTextContents(layer);
            // Recursively process the layers within all groups
        } else if (layer.typename == "LayerSet") {
            processLayersAndGroups(layer.layers);
        }
    }
}

 

 

12 replies

Stephen Marsh
Community Expert
Stephen MarshCommunity ExpertCorrect answer
Community Expert
July 22, 2024

If only Photoshop was InDesign when it came to text!

 

I don't know if this is possible using the standard Edit > Find and Replace Text... command.

 

It is possible to script using a regular expression based find/replace, however, if you have different text attributes (sizes, colours etc) then the following code may not work correctly (this script changes all text layers from comma+space to comma+return):

 

/*
Text Replace Comma Space for Comma Return in All Text Layers and Groups.jsx
v1.0 - 25th July 2024, Stephen Marsh
https://community.adobe.com/t5/photoshop-ecosystem-discussions/batch-adding-line-break-behind-every-comma-of-text-layer/m-p/14753971
*/

#target photoshop

if (app.documents.length > 0) {
    var doc = app.activeDocument;
    processLayersAndGroups(doc.layers);
} else {
    alert("A document must be open to run this script!");
}

function changeTextContents(layer) {
    // Check if the layer is a text layer
    if (layer.kind == LayerKind.TEXT) {
        // Regular expression to change comma+space to comma+return
        layer.textItem.contents = layer.textItem.contents.replace(/\, /g, ',\r');
    }
}

function processLayersAndGroups(layers) {
    // Recursively process the root/top-level layers
    for (var i = 0; i < layers.length; i++) {
        var layer = layers[i];
        if (layer.typename == "ArtLayer") {
            changeTextContents(layer);
            // Recursively process the layers within all groups
        } else if (layer.typename == "LayerSet") {
            processLayersAndGroups(layer.layers);
        }
    }
}

 

 

Known Participant
July 23, 2024

I am very grateful for your help ^^ However, the script not worked to me. Yeah, working with Photoshop is a bit annoyed when they limit many things, I wished I could have more option than it

Stephen Marsh
Community Expert
Community Expert
July 23, 2024
quote

I am very grateful for your help ^^ However, the script not worked for me.


By @Zipser31550168t845

 

What does this mean exactly?

c.pfaffenbichler
Community Expert
Community Expert
July 22, 2024

Please provide a file.

 

You can copy a linebreak and paste it in the »Find and Replace Text« field. 

Stephen Marsh
Community Expert
Community Expert
July 22, 2024
quote

You can copy a linebreak and paste it in the »Find and Replace Text« field. 

 

By @c.pfaffenbichler

 

I didn't know that!

 

EDIT: I just tried and this works beautifully! I copied the return character from within the text inside Photoshop.