Reputation: 467
Is there an easy way to replace characters at the beginning and end of a string, but not in the middle? I need to trim off dashes. I know trim()
exists, but it only trims whitespace.
Here's my use case:
Input:
university-education
-test
football-coach
wine-
Output:
university-education
test
football-coach
wine
Upvotes: 4
Views: 3457
Reputation: 136
The 'trim' function here is inadequate. You can catch this gap using 'RegEx' within the 'replace' function.
let myText = '-education';
myText = myText.replace(/^\-+|\-+$/g, ''); // output: "education"
Use in the array
let myTexts = [
'university-education',
'-test',
'football-coach',
'wine',
];
myTexts = myTexts.map((text/*, index*/) => text.replace(/^\-+|\-+$/g, ''));
/* output:
(4)[
"university-education",
"test",
"football-coach",
"wine"
]
*/
/^\ beginning of the string, dashe, one or more times
| or
\-+$ dashe, one or more times, end of the string
/g 'g' is for global search. Meaning it'll match all occurrences.
Sample:
const removeDashes = (str) => str.replace(/^\-+|\-+$/g, '');
/* STRING EXAMPLE */
const removedDashesStr = removeDashes('-education');
console.log('removedDashesStr', removedDashesStr);
// ^^ output: "removedDashesStr education"
let myTextsArray = [
'university-education',
'-test',
'football-coach',
'wine',
];
/* ARRAY EXAMPLE */
myTextsArray = myTextsArray.map((text/*, index*/) => removeDashes(text));
console.log('myTextsArray', myTextsArray);
/*^ outpuut:
myTextsArray [
"university-education",
"test",
"football-coach",
"wine"
]
*/
Upvotes: 0
Reputation: 86
I would suggest using the trim function of lodash. It does exactly what you want. It has a second parameter which allows you to pass the characters which should be trimmed. In your case you could use it like this:
trim("-test", "-");
Upvotes: 0
Reputation: 89394
You can use String#replace
with a regular expression.
^-*|-*$
Explanation:
^
- start of the string
-*
matches a dash zero or more times
|
- or
-*
- matches a dash zero or more times
$
- end of the string
function trimDashes(str){
return str.replace(/^-*|-*$/g, '');
}
console.log(trimDashes('university-education'));
console.log(trimDashes('-test'));
console.log(trimDashes('football-coach'));
console.log(trimDashes('--wine----'));
Upvotes: 9