Mam ciąg 12345.00
i chciałbym, aby powrócił 12345.0
.
Patrzyłem trim
, ale wygląda na to, że to tylko przycinanie białych znaków, a slice
nie wiem, jak to by działało. Jakieś sugestie?
javascript
slice
trim
Phill Pafford
źródło
źródło
Math.round('0.5') === 1
;)Odpowiedzi:
Możesz użyć funkcji podciągu :
To jest akceptowana odpowiedź, ale zgodnie z poniższymi rozmowami składnia plastra jest znacznie bardziej przejrzysta:
źródło
str = str.substring(0, str.length -1);
slice
&substring
są takie same; z wyjątkiem tego, żeslice()
akceptuje indeks ujemny w stosunku do końca łańcucha, ale niesubstring
, powodujeout-of-bound
błądsubstring
jest o 11% szybszy niżslice
. jsperf.com/js-slice-vs-substring-testMożesz użyć plasterka ! Musisz tylko upewnić się, że wiesz, jak go używać. Dodatnie liczby # odnoszą się do początku, liczby ujemne odnoszą się do końca.
źródło
substring
można zastosować tej metody również w przypadku ciągów dynamicznych? Korzystając z str. Length, aby dynamicznie uzyskać długość?Możesz użyć metody podciągów obiektów łańcuchowych JavaScript:
Bezwarunkowo usuwa ostatnie cztery znaki z łańcucha
s
.Jeśli jednak chcesz warunkowo usunąć ostatnie cztery znaki, tylko jeśli są one dokładnie
_bar
:źródło
slice
tu jest lepiej.s.slice(0, -4)
Najłatwiejszą metodą jest użycie
slice
metody ciągu, która pozwala na pozycje ujemne (odpowiadające przesunięciom z końca łańcucha):Jeśli potrzebujesz czegoś bardziej ogólnego, aby usunąć wszystko po ostatnim podkreśleniu (włącznie z nim), możesz wykonać następujące czynności (pod warunkiem,
s
że zawiera on co najmniej jeden znak podkreślenia):źródło
W przypadku liczby takiej jak twój przykład zaleciłbym zrobienie tego ponad
substring
:Zauważ, że to faktycznie zaokrągli liczbę, co, jak sądzę, jest pożądane, ale może nie:
źródło
Korzystanie z funkcji wycinka JavaScript:
Można tego użyć do usunięcia „_bar” na końcu łańcucha dowolnej długości.
źródło
Wyrażenie regularne jest tym, czego szukasz:
źródło
Spróbuj tego:
źródło
Co powiesz na:
źródło
Użyj wyrażenia regularnego:
źródło
źródło
źródło
Oto alternatywa, której nie widziałem w innych odpowiedziach, dla zabawy.
Nie jest tak czytelny ani prosty jak plasterek lub podciąg, ale pozwala grać z ciągiem przy użyciu kilku fajnych metod tablicowych, więc warto wiedzieć.
źródło
źródło
Najkrótsza droga:
źródło
Jeśli chcesz zrobić ogólne zaokrąglanie liczb zmiennoprzecinkowych, zamiast przycinać ostatni znak:
EDYCJA: Wydaje się, że istnieje wbudowana funkcja do tego, jak zauważa Paolo. To rozwiązanie jest oczywiście znacznie czystsze niż moje. Użyj parseFloat, a następnie toFixed
źródło
źródło
https://jsfiddle.net/invos/w3zeqv6v/
/programming/34817546/javascript-how-to-delete-last-two-characters-in-a-string
"11.01 °C".slice(0,-2).trim()
źródło
Wydajność
Dzisiaj 2020.05.13 przeprowadzam testy wybranych rozwiązań na Chrome v81.0, Safari v13.1 i Firefox v76.0 na MacOs High Sierra 10.13.6.
Wnioski
slice(0,-1)
(D) jest szybki i najszybszym rozwiązaniem dla krótkich i długich ciągów i zaleca się jako szybkie rozwiązanie cross-browsersubstring
(C) isubstr
(E) są szybkieDetale
Przeprowadzam dwa testy dla rozwiązań A , B , C , D , E ( ext ), F , G (mój)
Rozwiązania są przedstawione poniżej
Pokaż fragment kodu
Oto przykładowe wyniki dla Chrome dla krótkiego ciągu
źródło
Pamiętaj, że
String.prototype.{ split, slice, substr, substring }
działają na ciągach kodowanych w UTF-16Żadna z poprzednich odpowiedzi nie obsługuje Unicode. Łańcuchy są kodowane jako UTF-16 w większości nowoczesnych silników JavaScript, ale wyższe punkty kodu Unicode wymagają par zastępczych , więc starsze, wcześniej istniejące metody łańcuchów działają na jednostkach kodu UTF-16, a nie punktach kodu Unicode.
Ponadto odpowiedzi RegExp nie pasują do podziałów linii na końcu w ich obecnej formie:
Użyj iteratora ciągów do iteracji znaków
Kod obsługujący Unicode wykorzystuje iterator łańcucha; widzieć
Array.from
i...
rozprzestrzeniać się .string[Symbol.iterator]
można użyć (np. zamiaststring
).Zobacz także Jak podzielić ciąg znaków Unicode na znaki w JavaScript .
Przykłady:
Użyj flag
s
iu
naRegExp
Te
dotAll
lubs
flag marki.
dopasować znaki przerwy linii,unicode
czyu
flaga umożliwia pewne funkcje związane z Unicode.Przykłady:
Zauważ, że niektóre grafemy składają się z więcej niż jednego punktu kodowego, np.
🏳️🌈
Który składa się z sekwencji🏳
(U + 1F3F3),VS16
(U + FE0F) ,ZWJ
(U + 200D) ,🌈
(U + 1F308). Tutaj nawetArray.from
podzieli to na cztery „postacie”. Dopasowanie ich jest możliwe dzięki właściwości Unicode, która ucieka od propozycji właściwości sekwencji .źródło
W przypadkach, gdy chcesz usunąć coś, co znajduje się blisko końca łańcucha (w przypadku łańcuchów o zmiennej wielkości), możesz połączyć slice () i substr ().
Miałem ciąg znaków ze znacznikami, zbudowany dynamicznie, z listą tagów kotwicy oddzielonych przecinkiem. Ciąg był podobny do:
Aby usunąć ostatni przecinek, wykonałem następujące czynności:
źródło
Spróbuj tego:
Możesz także wypróbować działający przykład na żywo pod adresem http://jsfiddle.net/informativejavascript/F7WTn/87/ .
źródło
Przepraszam za moje grafiki, ale post został wcześniej oznaczony jako „jquery”. Tak więc nie możesz używać slice () wewnątrz jQuery, ponieważ slice () jest metodą jQuery do operacji z elementami DOM, a nie podciągami ... Innymi słowy odpowiedź @Jon Erickson sugeruje naprawdę idealne rozwiązanie.
Jednak twoja metoda będzie działała poza funkcją jQuery, w prostym JavaScript. Muszę powiedzieć ze względu na ostatnią dyskusję w komentarzach, że jQuery jest znacznie częściej odnawialnym rozszerzeniem JS niż jego najbardziej znany ECMAScript.
Istnieją również dwie metody:
jak nasz:
string.substring(from,to)
plus plus, jeśli indeks „do” nulled zwraca resztę ciągu. więc:string.substring(from)
pozytywne lub negatywne ...i niektóre inne - substr () - które zapewniają zakres podciągów i „długość” mogą być dodatnie:
string.substr(start,length)
Również niektórzy opiekunowie sugerują, że ostatnia metoda
string.substr(start,length)
nie działa lub działa z błędem dla MSIE.źródło
String.prototype.slice
jest rodzimą metodąslice()
metoda jQuery do manipulacji DOM: jQuery API: .slice () . I PEWNE, że MOŻNA ZROBIĆ jak polimorficzne dziedziczenie JS Array.slice (), ale są to dwie różne metody i myślę, że należy je rozróżnić. Jest to więc tylko przybliżenie tej wiedzy..slice
zmienną, która jest łańcuchem, zrobi to, co chciał OP. Nie ma znaczenia, czy jest to „wewnątrz jQuery” i nie ma żadnego sposobu, by „ingerował” w jakikolwiek sposób, chyba że nadpiszeszString.prototype
jQuery, co, jestem pewien, uniemożliwi działanie KAŻDEGO kodu javascript. Twoja odpowiedź mówi tylko, że inna odpowiedź nie jest dobra, a argument, który podałeś, jest nieprawidłowy..data
manipulacje i skończysz z tym „łańcuchem”), który jeślislice
go wywołałeś , nie zrobiłby tego, co chcesz. To powiedziawszy, to nie jest naprawdę pomocna odpowiedź.Użyj podciągów, aby uzyskać wszystko po lewej stronie _bar. Ale najpierw musisz pobrać instrukcję _bar w ciągu:
3 to ten początek, a 7 to długość.
źródło