Chcę usunąć wszystkie znaki specjalne, z wyjątkiem spacji, z ciągu znaków przy użyciu JavaScript.Usuń wszystkie znaki specjalne oprócz spacji z ciągu znaków, używając JavaScript
Na przykład abc's test#s
wyprowadzane jako abcs tests
powinno.
Chcę usunąć wszystkie znaki specjalne, z wyjątkiem spacji, z ciągu znaków przy użyciu JavaScript.Usuń wszystkie znaki specjalne oprócz spacji z ciągu znaków, używając JavaScript
Na przykład abc's test#s
wyprowadzane jako abcs tests
powinno.
Powinieneś użyć funkcji zamiany ciągu, z jednym wyrażeniem regularnym. Zakładając przez znaki specjalne, to znaczy, że nic nie jest list, oto rozwiązanie:
var str = "abc's test#s";
alert(str.replace(/[^a-zA-Z ]/g, ""));
Które znaki specjalne chcesz usunąć z ciągu znaków, przygotuj ich listę, a następnie funkcję javascript replace, aby usunąć wszystkie znaki specjalne.
var str = 'abc'de#;:sfjkewr47239847duifyh';
alert(str.replace("'","").replace("#","").replace(";","").replace(":",""));
lub można uruchomić pętlę przez cały ciąg i porównać jeden pojedynczy znak z kodem ASCII i zregenerować nowy łańcuch.
Nie, nie rób tego. Jest naprawdę strasznie powolny. Znacznie lepiej jest używać wyrażenia regularnego. –
To rozwiązanie jest bardzo dobre dla zastąpienia tylko jednego znaku. W moim przypadku było to pomocne, dzięki. –
nie wiem JavaScript, ale nie jest to możliwe przy użyciu regex?
Coś takiego jak [^\w\d\s]
będzie pasowało do niczego oprócz cyfr, znaków i białych znaków. Byłoby tylko pytanie, aby znaleźć składnię w JavaScript.
http: //przepełnienie stosu.com/a/4374890/2384606 To jest odpowiedź na twoje pytanie :) – Carmela
Można to zrobić podając znaki, które chcesz usunąć:
string = string.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '');
Alternatywnie, aby zmienić wszystkie znaki oprócz liter i cyfr, spróbuj:
string = string.replace(/[^a-zA-Z0-9]/g, '');
co, jeśli nie chcę usunąć miejsca za pomocą tego? '/ [^ a-zA-Z0-9]/g' –
@AbbazAby zachować miejsce, po prostu dodaj to do białych znaków na liście. twoje wyrażenie to "/ [^ a-zA-Z0-9]/g" (zauważ spację po 9) –
Pierwsze rozwiązanie nie działa dowolny alfabet UTF-8. (Wytnie tekst, taki jak Привіт). Udało mi się stworzyć funkcję, która nie używa RegExp i używa dobrej obsługi UTF-8 w silniku JavaScript. Pomysł jest prosty, jeśli symbol jest równy wielkiem i małemu, to jest znak specjalny. Jedyny wyjątek dotyczy białych znaków.
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;
}
Dziękuję za to dość kreatywne rozwiązanie. Jest to dużo bardziej zgodne z tym, jak faktycznie działają języki, ponieważ wielu z nas nie uważa znaków specjalnych "Привіт" lub "æøå". Większość rozwiązań wycina każdą postać, która nie jest częścią alfabetu angielskiego. –
Prawie idealna odpowiedź dla mnie, ale niestety uważa chińskie znaki za znaki specjalne. –
@EricMajerus and hindi too – programmer
Próbowałem bardzo twórcze rozwiązanie Seagul, ale okazało się, że numery traktowane również jako znaki specjalne, które nie pasował do moich potrzeb. Więc tutaj jest mój (failsafe) Tweak roztworu Seagul za ...
//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 '';
}
Zapomniałeś zadeklarować 'reg' w swojej pierwszej funkcji. –
kropka (.) Nie mogą być uznane za wyjątkowe. Dodałem warunek LUB odpowiedź do & Mewa Mozfet za:
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 '';
}
wyszukiwanie nie wszystko (znaki słów || spacja):
str.replace(/[^\w ]/, '')
Jak zdefiniować znak specjalny? –