Jestem gotów wykonać następujące czynności:

Mam :

    var distance1 = "5.5 Km";
    var distance2 = "5,5 Km";
    //The below works as expected and returns 5.5
    var finalDistance = distance1.replace( /[^\d\.]*/g, '');

    //However the below doesn't and print 55 instead
    distance2.replace( /[^\d\.]*/g, '');

    //I've tried the below too and it throws 5,5. But I want 5.5
    distance2.replace( /[^\d\.\,]*/g, '');
2
Folky.H 27 czerwiec 2017, 02:59

3 odpowiedzi

Najlepsza odpowiedź

Najpierw wymień wszystkie wystąpienia , za pomocą ., a następnie wymień znaki nie-cyfrowe (z wyjątkiem {x2}}) z '':

distance2 = distance2.replace( /,/g, '.').replace(/[^\d\.]+/g, '');

Gdzie:

/,/g : matches all commas ',' that will be replaced by '.'
/[^\d\.]+ : matches any sequence of non-digit and non-dot ('.') characters that will be removed (replaced by the empty string '').

Pierwszy wymienić przekształcić "5,55 KM" do "5.55 KM", a następnie drugi przekształcić ten ostatni do "5.55".

Uwaga: Jeśli masz tylko jeden przecinek, lub tylko zainteresowany pierwszym napotkanym, a następnie możesz użyć: replace(',', '.') zamiast replace(/,/g, '.').

Jeśli używasz tylko reprezentacji pływaków, możesz użyć parseFloat zamiast drugiego replace:

var number = parseFloat(distance2.replace(/,/g, '.'));
3
ibrahim mahrir 27 czerwiec 2017, 00:14

Musisz ponownie przypisać wartość zastępczej zmiennej.

To znaczy

distance2 = distance2.replace( /[^\d\.]*/g, '');
-1
Stretch0 27 czerwiec 2017, 00:04

replace Działa, mówiąc "Znajdź ten ciąg i zastąpić tym ciągiem". Pierwszym parametrem jest to, co chcesz znaleźć, drugi to wymienić. Tak więc w swoim kodzie, który zastępujesz , bez nic:

distance2.replace( /[^\d\.]*/g, '');

Nie edytuje również ciągów "w miejscu", więc musisz przypisać zmienną distance2 do wartości powrotnej. Ponadto, aby uzyskać prostą pracę, nie musisz używać REGEX. Możesz po prostu wprowadzić ciąg jako pierwszy parametr i {X1}} znajdzie wszystkie mecze. W ten sposób zrobiłbym to:

distance2 = distance2.replace(',', '.');

Czytaj dalej:

https://www.w3schools.com/jsref/jsref_replace.asp. https://developer.mozilla.org/en/docs/web/javascript/reference/global_objects/string/replace.

0
Clonkex 27 czerwiec 2017, 00:20