I don't know shite about:
Replace string by position
Use substring to replace a string at a start end end point
While building a cross-posting script on idkshite.com I needed to replace jsx components in my .mdx
files with Liquid tags that can be understood by dev.to’s editor.
The parser that i’m using to find all incompatible jsx components provides the start and end position of the component inside of the markdown string. So I couldn’t directly use String.replace(stringToFind, replaceWithThis)
. To solve this problem, I came across this useful method to replace a string by a given position.
Replace by position
The basic idea is creating 2 substrings before and after the content to be replaced. Then you construct a new string from the first substring
+ the new content
+ second substring
.
Inside the result your text has been successfully replaced.
function replaceByPosition({
text,
position,
replaceWith,
}: {
text: string;
position: {start: number, end: number};
replaceWith: string
}) {
return (
text.substring(0, position.start) +
replaceWith +
text.substring(position.end + 1)
);
}