Home > Software design >  How can i trim just specific characters from my string?
How can i trim just specific characters from my string?

Time:04-14

I have the following array

const re = '    ';
var arr  = ['\t', '\n3\t3', '\n\t', '\n3\t3', '\n2\t', '\n\t2', '\n']

i need to trim the \t and \n characters from strings. So when i try

for(let i = 0;i < arr.length;i  ) {
let row = arr[i].split(re);
console.log(row);
}

i get

['', '']
['\n3', '3']
['\n', '']
['\n3', '3']
['\n2', '']
['\n', '2']
['\n']

i can't find a way to remove the \n charactes here when i get to this point so when i have just \n as element then it should be replaced with '' - empty string.

If the character includes other things inside for example

\n2

so \n before or after a number then i shold get just the number and to have just 2 inside

How can i replace this \n cahracters

CodePudding user response:

Reference: Here

It is not good practice to do with split method. You can use replace method instead.

Here is example what you want to do:

var someText = "Here's some text.\n It has some line breaks that will be removed \r using Javascript.\r\n";

someText = someText.replace(/(\r\n|\n|\r)/gm,"");

console.log(someText);

You can edit your replace method what you want to use in it.

Note: "/(\r\n|\n|\r)/gm" this is a regex.

CodePudding user response:

You may do a regex replacement on [\t\n] to remove these characters:

var arr = ['\t', '\n3\t3', '\n\t', '\n3\t3', '\n2\t', '\n\t2', '\n'];
var output = arr.map(x => x.replace(/[\t\n] /g, ""));
console.log(output);

Note that if there could be other whitespace characters which you also want to remove, just do a regex replacement on \s .

CodePudding user response:

You can just use String.prototype.trim(). It cleans \n and \t as well. It is only for trimming. It will not remove characters in the middle of the string. Example:

const arr = ['\t', '\n3\t3', '\n\t', '\n3\t3', '\n2\t', '\n\t2', '\n'];
const newArr = arr.map(val => val.trim());

CodePudding user response:

Use replace() function of string combined with map() function of array. It will look like this

arr.map(c => c.replace(/(\n|\t)/gi, ''))

Output will be:

[ '', '33', '', '33', '2', '2', '' ]

If you don't want to see empty strings in array you can just filter them with .filter(Boolean)

arr.map(c => c.replace(/(\n|\t)/gi, '')).filter(Boolean)

Output will be:

[ '33', '33', '2', '2' ]

CodePudding user response:

You can use a simple replace function:

var arr  = ['\t', '\n3\t3', '\n\t', '\n3\t3', '\n2\t', '\n\t2', '\n']
var row="";
var newArr=[];

for(i=0; i<arr.length; i  ){
    row = parseInt(arr[i].replace('\tn',""));
    if(isNaN(row) === false){newArr.push(row)}
}

console.log(newArr);

First replace("\,t,n") your characters, then parseInt() to convert remaining string-numbers to integers, lastly distinguish those numbers and push() them to a new array.

  • Related