Search code examples
javascriptstringsplitsplice

Replacing a JavaScript string in the last occurrence of two tildes ~~


I have a String which looks like this:

Mon Jan 24 2022 09:28:10 GMT+0100 (Mitteleuropäische Normalzeit)~~Admin_SA, SharePoint (i:0#.w|xespsa)~~00-Entwurf~~15-Indirekter Einkauf~~~~
Mon Jan 24 2022 09:28:20 GMT+0100 (Mitteleuropäische Normalzeit)~~Admin_SA, SharePoint (i:0#.w|xespsa)~~00-Entwurf~~15-Indirekter Einkauf~~~~
Tue Jan 25 2022 20:51:17 GMT+0100 (Mitteleuropäische Normalzeit)~~Admin_SA, SharePoint (i:0#.w|xespsa)~~15-Indirekter Einkauf~~15-Indirekter Einkauf~~Comment 1~~
Tue Jan 25 2022 20:58:34 GMT+0100 (Mitteleuropäische Normalzeit)~~Admin_SA, SharePoint (i:0#.w|xespsa)~~15-Indirekter Einkauf~~15-Indirekter Einkauf~~Comment 2~~

What I'm struggling with is the following:

Between the last occurrence of tildes (~~) we have Comment 2. I want to replace that value with another value, for instance Comment 3.

My solution would be this: https://jsfiddle.net/13wrpa2b/

alert(str[19]) // Comment 2

str[19] = "Comment 3"; 

let concat = str.join('~~');
alert(concat);

The problem with that is that I don't always know the exact length of the log and the comment does not necessarily have to be in the 19th place. But I do know that it will always be between the last occurrence of tildes ~~.

How can I achieve that?


Solution

  • Because there are two tildes at the end of the string the array will look like [..., "Comment 2", ""]. Therefore the item is in the second to last position so instead of using 19 you can use str.length - 2.

    let str = 'Mon Jan 24 2022 09:28:10 GMT+0100 (Mitteleuropäische Normalzeit)~~Admin_SA, SharePoint (i:0#.w|xespsa)~~00-Entwurf~~15-Indirekter Einkauf~~~~ Mon Jan 24 2022 09:28:20 GMT+0100 (Mitteleuropäische Normalzeit)~~Admin_SA, SharePoint (i:0#.w|xespsa)~~00-Entwurf~~15-Indirekter Einkauf~~~~ Tue Jan 25 2022 20:51:17 GMT+0100 (Mitteleuropäische Normalzeit)~~Admin_SA, SharePoint (i:0#.w|xespsa)~~15-Indirekter Einkauf~~15-Indirekter Einkauf~~Comment 1~~ Tue Jan 25 2022 20:58:34 GMT+0100 (Mitteleuropäische Normalzeit)~~Admin_SA, SharePoint (i:0#.w|xespsa)~~15-Indirekter Einkauf~~15-Indirekter Einkauf~~Comment 2~~'.split('~~')
    
    console.log(str[str.length - 2]) // Comment 2
    
    str[str.length - 2] = "Comment 3"; 
    
    let concat = str.join('~~');
    console.log(concat);