EN
Javascript - how to replace all character that is not a letter or number with underscore and also replace Polish letters with English letters
1 answers
5 points
I have code:
xxxxxxxxxx
1
const text = 'WSPÓŁCZYNNIK ąęć ź - pochłaniania DŹWIĘKU test ąęć';
2
3
const letters = ['ą', 'ć', 'ę', 'ł', 'ń', 'ó', 'ś', 'ź', 'ż'];
4
const replacement = ['a', 'c', 'e', 'l', 'n', 'o', 's', 'z', 'z'];
5
6
let result = text.toLocaleLowerCase();
7
8
for (let i = 0; i < letters.length; ++i) {
9
result = result.replaceAll(letters[i], replacement[i]);
10
}
11
12
console.log("before: " + text);
13
console.log("after : " + result);
My current resut:
xxxxxxxxxx
1
before: WSPÓŁCZYNNIK ąęć ź - pochłaniania DŹWIĘKU test ąęć
2
after : wspolczynnik aec z - pochlaniania dzwieku test aec
What is the best way to make from input string the result string:
xxxxxxxxxx
1
before:
2
WSPÓŁCZYNNIK ąęć ź - pochłaniania DŹWIĘKU test ąęć
3
after:
4
wspolczynnik_aec_z_pochlaniania_dzwieku_test_aec
I have also regex that works in notepad++
xxxxxxxxxx
1
Regex:
2
(_)+|[^0-9A-Za-z]
3
Replace with:
4
_
1 answer
2 points
Solution:
xxxxxxxxxx
1
function replaceAllRegExp(str, find, replace) {
2
return str.replace(new RegExp(find, 'g'), replace);
3
}
4
5
let text = ' WSPÓŁCZYNNIK ąęć ź - pochłaniania DŹWIĘKU test ąęć';
6
let result = text.toLocaleLowerCase();
7
8
const letters = ['ą', 'ć', 'ę', 'ł', 'ń', 'ó', 'ś', 'ź', 'ż', ' '];
9
const replacement = ['a', 'c', 'e', 'l', 'n', 'o', 's', 'z', 'z', '_'];
10
11
for (let index = 0; index < letters.length; index++) {
12
result = result.replaceAll(letters[index], replacement[index]);
13
}
14
15
result = replaceAllRegExp(result, '[^A-z0-9_]', '');
16
17
console.log("before: " + text);
18
console.log("after : " + result);
19
20
// before: WSPÓŁCZYNNIK ąęć ź - pochłaniania DŹWIĘKU test ąęć
21
// after : _wspolczynnik_aec_z__pochlaniania_dzwieku_test_aec
See also
0 commentsShow commentsAdd comment