Mój JS zapisuje niektóre ciągi danych do JSON za pomocą "stringify()", ale obserwując wyjściowy ciąg JSON widzę wiele dziwnych znaków (poza keyspace), takich jak NULL i inne złe znaki. Teraz nie mam listy tych "złych" znaków, więc jak mogę je usunąć z moich danych string?Jak usunąć złe znaki z ciągu znaków w JS?
Odpowiedz
byłoby miło, gdyby nie było proste regex, ale nie sądzę, że jest. Z tego co rozumiem, nadal chcesz zezwolić na znaki takie jak% $ # @, itp., Ale chcesz uniemożliwić inne dziwne znaki takie jak tabulatory i wartości null. Jeśli to prawda, uważam, że najprostszym sposobem byłoby pętli każdy znak i oceniać kod char ...
function stripCrap(val) {
var result = '';
for(var i = 0, l = val.length; i < l; i++) {
var s = val[i];
if(String.toCharCode(s) > 31)
result += s;
}
return result;
}
Jeśli naprawdę chcesz, aby użyć wyrażenia regularnego, biała lista podejście wydaje się konieczne. Umożliwi to dostęp do wszystkich cyfr, liter i spacji ...
val = val.replace(/[^a-z 0-9]+/gi,'');
dzięki bardzo za sugestię białej listy. Tak wspaniałe rozwiązanie tego problemu – Mansiemans
Otrzymuję błąd: 'TypeError: Funkcja Object String() {[kod macierzysty]} nie ma metody 'toCharCode'' w chrome – nnyby
Mam to działa, po prostu zmień linię na: 'if (s.charCodeAt (0)> 31) {' – nnyby
Jeśli masz listę „dobrych” znaków można utworzyć regex który dopasowuje dowolny znak nie w swoim liście, a rozebrać wszystko pasuje - przykładowo, następujące regex pasuje coś nie litery „a”, „q” lub „z”:
/[^aqz]+/ig
Co powoduje te dziwne postacie? Lepiej byłoby zbadać główną przyczynę i tam ją naprawić. –