Skip to main content
Solved

String.replace() returning unexpected result when replacement string undefined

  • February 18, 2020
  • 2 replies
  • 24 views

Forum|alt.badge.img+18

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"

Best answer by Stephen_Suen

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

2 replies

  • Known Participant
  • February 18, 2020

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.


Stephen_Suen
Forum|alt.badge.img+19
  • Employee
  • Answer
  • February 25, 2020

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