Suppose I have a string like this:
This is a fridge with 10 chocolates and ~5 icecream samples description to check if backward slash \ breaks anything and checking caret ^ symbol as well
I want to replace those special characters with the following:
\ to \1F
~ to \7E
^ to \5E
I may find more to replace in future but at this point I just want to handle above such that after replacing it, the string looks like the following:
This is a fridge with 10 horse and \7E5 goat samples description to check if backward slash \F breaks anything and checking caret \5E symbol as well
Should I just follow the basic approach of finding if that special character exists in a string or not and then replace or if there’s any better way of handling this which I can scale it in future to accommodate new special characters?
replaceAll doesnt care if it’s in the string or not - you can run mystring.replaceAll("dog","cat")
and if mystring doesnt have any “dog” in it you get… the original string back.
This does get a bit tedious if you have a lot of replacements to make though.
Perhaps the ‘shortest’ way i’ve seen it done is a replacement-object definition.
let replace = {
"\\" : "\\1F", //Note that this has to be \\, because you want a literal \.
"~": "\\7E",
"^": "\\5e"
}
mystring.replace(/[\\~^]/g,(m) => replace[m])
2 Likes
Thanks very much. I think the only thing not working is that it didn’t convert \
to \F
in the final string. Any idea how can be fixed?
I"ve your example in JSFiddle here in case it’s easier to test.
The original string needs a \\
in it too. Javascript is eating it when you declare str
.
I see. So even if user is going to type a single \
and that’s how it will get stored in the database. I should find all \
in the string first and then convert all \
to \\
before running your logic.
…depends on how you’re getting the data into Javascript? (If Javascript is directly interacting with the Database, their communication should transmit the \
's automatically; if you’re doing let data = <?= somePHPEchoingOfDataHere ?>
, you’ll need to stick some extra 's in somewhere.
Hmm. It’s coming back to the user interface from a Java web service so I might just have to create the string again by finding \
and then replacing it with \\
. That adds an additional character as well I believe and I may have to think what to do since I’ve 250 characters limit and if it goes above that after running the logic.
Well, give it a try as-is, and if you’re missing characters when you output it, you know you need to add slashes somewhere
1 Like