Is it possible to ignore \n and \ in a string?
Here is my example, I have strings that I acquired automatically and some of them have \ and \n, the problem is that I want to replace them all in a file but when I'm matching them with regex the string I get from regex.match XX.Sp("\tS◄J_-D%\n", rv) is ignoring \ and \n, but the array that I have with values when comparing the values of regex return and string from array they do not match because the string taken from obj1 is transforming all \ and \n accordingly.
const obj1 = [{func: 'XX.Sp("\tSJ_-D%\n", rv)',
name: 'nameofthedes',
}]
EXAMPLE
function des(match) {
const x = /\\|\n/g
const nm = match.replace(x,'');
for (var i in obj){
if (i) {
console.log(nm) // XX.Sp("tS◄J_-D%n", rv)
console.log(i.replace(x,'')) // XX.Sp(" S◄J_-D%", rv)
console.log(i.replace(x,'') == nm) // false
}
}
if (obj[match]) {
console.log(obj[match])
return `"${obj[match]}"`
}
return match
}
EDIT:
So the problem that I'm having is when using regex to match, it returns all the special characters escaped so that is why it is not matching, how can i prevent the regex match from doing it?
when matching with regex this string XX.Sp("\tSJ_-D%\n", rv) is becoming XX.Sp("\\tSJ_-D%\\n", rv) that is why I can't compare them.
CodePudding user response:
regex = /\\|\n/g
string.replace(regex,'');
'\\' for slash and '\n' for '\n' g flag matching all occurance.
You can use replaceAll() but this is not very consistent for every JS engine
CodePudding user response:
The problem you have is that your regular expression /\\|\n/g is targetting the \ chracter first so the newline \n just becomes n.
You have also assumed that a single \ is valid in a string - it has special meaning and must always be followed by another character.
Note that there are 2 of these in your string \n and \t.
\n is the newline character and \t is the tab character. Notice the white space in some of your logging, it's a tab.
What you should be doing is removing both \t and \n with /\t|\n/g
const str = 'XX.Sp("\tSJ_-D%\n", rv)';
console.log(str);
/* outputs:
XX.Sp(" SJ_-D%
", rv)
*/
const fixed = str.replace(/\t|\n/g,'');
console.log(fixed);
/* outputs:
XX.Sp("SJ_-D%", rv)
*/
