Usuń wszystkie znaki specjalne z wyjątkiem spacji z łańcucha za pomocą JavaScript
Chcę usunąć wszystkie znaki specjalne z wyjątkiem spacji z łańcucha za pomocą JavaScript.
Na przykład,
abc's test#s
powinien wyjść jako
abcs tests
.
8 answers
Należy użyć funkcji string replace, z pojedynczym wyrażeniem regularnym. Zakładając przez znaki specjalne, masz na myśli wszystko, co nie jest literą, oto rozwiązanie:
var str = "abc's test#s";
alert(str.replace(/[^a-zA-Z ]/g, ""));
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-02 05:01:55
Możesz to zrobić podając znaki, które chcesz usunąć:
string = string.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '');
Alternatywnie, aby zmienić wszystkie znaki z wyjątkiem cyfr i liter, spróbuj:
string = string.replace(/[^a-zA-Z0-9]/g, '');
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-28 16:49:51
Pierwsze rozwiązanie nie działa dla żadnego alfabetu UTF-8. (Będzie wyciąć tekst, taki jak Привіт). Udało mi się stworzyć funkcję, która nie używa RegExp i korzystać z dobrej obsługi UTF-8 w silniku JavaScript. Idea jest prosta, jeśli symbol jest równy wielkimi i małymi literami, jest to znak specjalny. Jedynym wyjątkiem jest spacja.
function removeSpecials(str) {
var lower = str.toLowerCase();
var upper = str.toUpperCase();
var res = "";
for(var i=0; i<lower.length; ++i) {
if(lower[i] != upper[i] || lower[i].trim() === '')
res += str[i];
}
return res;
}
Update: Należy pamiętać, że to rozwiązanie działa tylko dla języków, w których są małe i duże litery. W języki takie jak Chiński, to nie zadziała.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-19 22:03:29
Wypróbowałem bardzo kreatywne rozwiązanie firmy Seagul, ale okazało się, że cyfry traktowane są również jako znaki specjalne, które nie odpowiadały moim potrzebom. Więc oto mój (failsafe) tweak rozwiązania Seagul...
//return true if char is a number
function isNumber (text) {
if(text) {
var reg = new RegExp('[0-9]+$');
return reg.test(text);
}
return false;
}
function removeSpecial (text) {
if(text) {
var lower = text.toLowerCase();
var upper = text.toUpperCase();
var result = "";
for(var i=0; i<lower.length; ++i) {
if(isNumber(text[i]) || (lower[i] != upper[i]) || (lower[i].trim() === '')) {
result += text[i];
}
}
return result;
}
return '';
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-26 16:14:45
Nie znam JavaScript, ale czy nie jest możliwe użycie regex?
Coś w rodzaju [^\w\d\s]
dopasuje wszystko oprócz cyfr, znaków i spacji. To byłoby tylko pytanie, aby znaleźć składnię w JavaScript.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-02 18:23:42
Search all not (word characters / / space):
str.replace(/[^\w ]/, '')
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-24 19:12:44
Dot (.) nie mogą być uważane za specjalne. Dodałem warunek OR do odpowiedzi Mozfeta & Mewa:
function isNumber (text) {
reg = new RegExp('[0-9]+$');
if(text) {
return reg.test(text);
}
return false;
}
function removeSpecial (text) {
if(text) {
var lower = text.toLowerCase();
var upper = text.toUpperCase();
var result = "";
for(var i=0; i<lower.length; ++i) {
if(isNumber(text[i]) || (lower[i] != upper[i]) || (lower[i].trim() === '') || (lower[i].trim() === '.')) {
result += text[i];
}
}
return result;
}
return '';
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-11 07:54:02
Którego znaki specjalne chcesz usunąć z ciągu znaków, przygotuj ich listę, a następnie funkcję zamiany javascript użytkownika, aby usunąć wszystkie znaki specjalne.
var str = 'abc'de#;:sfjkewr47239847duifyh';
alert(str.replace("'","").replace("#","").replace(";","").replace(":",""));
Lub można uruchomić pętlę dla całego łańcucha i porównać pojedynczy pojedynczy znak z kodem ASCII i zregenerować nowy łańcuch.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-02 04:58:05