Skip to main content

Doing some simple substring removal and getting different results from the block than in JS Bin.


let renderName = "MX_Topo-Chico-Agua_Mineral-Water_600ml_PET_6x";
let secondaryQuantity = "6x";

// scripting block generates an UNEXPECTED output: "MXTopo-Chico-Agua_Mineral-Water_600ml_PET"
output.text( removeSubString(renderName,secondaryQuantity) );

// JS Bin, however, outputs as EXPECTED: "MX_Topo-Chico-Agua_Mineral-Water_600ml_PET_"
// console.log( removeSubString(renderName,secondaryQuantity) );

function removeSubString(str,substr) {
return str.replace(substr,"");
}

Oddly, making use of a character (rather than “”) yields proper results.


renderName.replace(secondaryQuantity,"1")
=> "MX_Topo-Chico-Agua_Mineral-Water_600ml_PET_1"

Ah this is because output.text supports Markdown. So it’s italicizing _Topo-Chico-Agua_. I’d suggest either wrapping the input in backticks, e.g. output.text('`' + removeSubString(renderName,secondaryQuantity) + '`' ); or using console.log if you’re just printing out for debugging.


Quick update on this — the unexpected behavior has been fixed. output.text will no longer apply Markdown formatting (use output.markdown for that).


Reply