JavaScript нарезать / вырезать / обрезать последний символ в строке

Обычно используются те аргументы по умолчанию, которые видны в определенной области. Вы можете делать (но не должны) напуганные вещи:

#include <iostream>
void frob (int x) {
    std::cout << "frob(" << x << ")\n";
}

void frob (int = 0);
int main () {
    frob();                     // using 0
    {
        void frob (int x=5) ;
        frob();                 // using 5
    }
    {
        void frob (int x=-5) ;
        frob();                 // using -5
    }
}

В вашем случае видна подпись базового класса. Чтобы использовать производные аргументы по умолчанию, вы должны явно вызвать эту функцию с помощью указателя на ваш производный класс, либо объявив его таким образом, либо правильно произведя его.

1764
задан Peter Mortensen 15 November 2017 в 19:07
поделиться

10 ответов

Вы можете использовать функцию substring :

 let str = "12345.00"; str = str.substring (0, str.length - 1); console.log (str); 

Это принятый ответ, но, согласно приведенным ниже обсуждениям, синтаксис slice намного яснее:

 let str = "12345.00"; str = str.slice (0, -1); console.log (str); 
3013
ответ дан 22 November 2019 в 20:06
поделиться

Самый короткий путь:

str.slice(0, -1); 
1
ответ дан 22 November 2019 в 20:06
поделиться

Вы можете использовать срез ! Вы просто должны убедиться, что знаете, как им пользоваться. Положительные # относятся к началу, отрицательные числа относятся к концу.

js>"12345.00".slice(0,-1)
12345.0
1252
ответ дан 22 November 2019 в 20:06
поделиться

Если вы хотите выполнить обычное округление чисел с плавающей запятой вместо того, чтобы просто обрезать последний символ:

var float1 = 12345.00,
    float2 = 12345.4567,
    float3 = 12345.982;

var MoreMath = {
    /**
     * Rounds a value to the specified number of decimals
     * @param float value The value to be rounded
     * @param int nrDecimals The number of decimals to round value to
     * @return float value rounded to nrDecimals decimals
     */
    round: function (value, nrDecimals) {
        var x = nrDecimals > 0 ? 10 * parseInt(nrDecimals, 10) : 1;
        return Math.round(value * x) / x;
    }
}

MoreMath.round(float1, 1) => 12345.0
MoreMath.round(float2, 1) => 12345.5
MoreMath.round(float3, 1) => 12346.0

РЕДАКТИРОВАТЬ: Похоже, для этого существует встроенная функция , как указывает Паоло. Это решение явно намного чище, чем мое. Используйте parseFloat , а затем toFixed

3
ответ дан 22 November 2019 в 20:06
поделиться

How about:

let myString = "12345.00"; console.log(myString.substring(0, myString.length - 1));
9
ответ дан 22 November 2019 в 20:06
поделиться

Для числа, подобного вашему примеру, я бы порекомендовал сделать это над подстрокой :

 console.log (parseFloat ('12345.00'). ToFixed (1)) ; 

Обратите внимание, что это на самом деле округляет число, что, я думаю, желательно, но, возможно, нет:

 console.log (parseFloat ('12345.46'). ToFixed (1)); 
67
ответ дан 22 November 2019 в 20:06
поделиться

@ Джейсон С:

Вы можете использовать ломтик! Тебе просто нужно убедитесь, что знаете, как им пользоваться. Положительные # относятся к начало, отрицательные числа относительно конца.

js> "12345.00" .slice (0, -1) 12345.0

Извините за мою графику, но сообщение раньше было помечено как jquery. Итак, вы не можете использовать slice () внутри jQuery, потому что slice () - это метод jQuery для операций с элементами DOM, а не с подстроками ... Другими словами, ответ @Jon Erickson предлагает действительно идеальное решение.

Однако ваш метод будет работать вне функции jQuery, внутри простого Javascript. В связи с последним обсуждением в комментариях необходимо сказать, что jQuery гораздо чаще является возобновляемым расширением JS, чем его собственный родительский, наиболее известный ECMAScript.

Здесь также существуют два метода:

как наш:

string.substring (from, to) as plus if 'to' index null возвращает остальную часть строки. так: string.substring (from) положительный или отрицательный ...

и некоторые другие - substr () - которые предоставляют диапазон подстроки, а 'length' может быть положительным только: string. substr (start, length)

Также некоторые сопровождающие предполагают, что последний метод string.substr (start, length) не работает или работает с ошибкой для MSIE.

-3
ответ дан 22 November 2019 в 20:06
поделиться

Вы можете использовать метод substring строковых объектов JavaScript:

s = s.substring(0, s.length - 4)

Он безоговорочно удаляет последние четыре символа из строки s.

Однако, если вы хотите условно удалить последние четыре символа, только если они точно _bar:

var re = /_bar$/;
s.replace(re, "");
255
ответ дан 22 November 2019 в 20:06
поделиться

Используйте подстроку, чтобы получить все, что находится слева от _bar. Но сначала вы должны получить instr _bar в строке:

str.substring(3, 7);

3 — это начало, а 7 — длина.

-7
ответ дан 22 November 2019 в 20:06
поделиться

Самый простой способ — использовать метод slice строки, который допускает отрицательные позиции (соответствующие смещениям от конца строки):

const s = "your string";
const withoutLastFourChars = s.slice(0, -4);

Если вы нужно что-то более общее, чтобы удалить все после (и включая) последнего подчеркивания, вы можете сделать следующее (пока s гарантированно содержит хотя бы одно подчеркивание):

 const s = "your_string "; const безLastChunk = s.slice(0, s.lastIndexOf("_")); console.log(безLastChunk); 
157
ответ дан 22 November 2019 в 20:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: