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

У меня есть строка, 12345.00, и я бы хотел, чтобы она вернула 12345.0.

Я просмотрел trim, но похоже, что это только обрезание пробелов и slice, которые я не вижу, как это будет работать. Любые предложения?

Ответы

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

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

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

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

var re = /_bar$/;
s.replace(re, "");

Ответ 4

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

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

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

const s = "your_string";
const withoutLastChunk = s.slice(0, s.lastIndexOf("_"));
console.log(withoutLastChunk);

Ответ 5

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

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

Ответ 6

Использование функции фрагмента JavaScript:

let string = 'foo_bar';
string = string.slice(0, -4); // Slice off last four characters here
console.log(string);

Ответ 7

Регулярное выражение - это то, что вы ищете:

let str = "foo_bar";
console.log(str.replace(/_bar$/, ""));

Ответ 8

Как насчет:

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

Ответ 9

Попробуйте это:

const myString = "Hello World!";
console.log(myString.slice(0, -1));

Ответ 10

Используйте регулярное выражение:

let aStr = "12345.00";
aStr = aStr.replace(/.$/, '');
console.log(aStr);

Ответ 11

  1. (. *), захватывает любой символ несколько раз

console.log("a string".match(/(.*).$/)[1]);

Ответ 12

const str = "test!";
console.log(str.slice(0, -1));

Ответ 13

Вот альтернатива, которую я не думаю, что видел в других ответах, просто для удовольствия.

var strArr = "hello i'm a string".split("");
strArr.pop();
document.write(strArr.join(""));

Ответ 14

debris = string.split("_") //explode string into array of strings indexed by "_"

debris.pop(); //pop last element off the array (which you didn't want)

result = debris.join("_"); //fuse the remainng items together like the sun

Ответ 15

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

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

EDIT: Похоже, для этого существует встроенная функция, как указывает Паоло. Это решение, очевидно, намного чище, чем мое. Используйте parseFloat, за которым следует toFixed

Ответ 16

if(str.substring(str.length - 4) == "_bar")
{
    str = str.substring(0, str.length - 4);
}

Ответ 18

Кратчайший путь:

str.slice(0, -1); 

Ответ 19

В тех случаях, когда вы хотите удалить что-то, что близко к концу строки (в случае строк с переменным размером), вы можете комбинировать slice() и substr().

У меня была строка с разметкой, динамически построенная, со списком якорных тегов, разделенных запятой. Строка была примерно такой:

var str = "<a>text 1,</a><a>text 2,</a><a>text 2.3,</a><a>text abc,</a>";

Чтобы удалить последнюю запятую, я сделал следующее:

str = str.slice(0, -5) + str.substr(-4);

Ответ 20

@Jason S:

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

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) как плюс, если 'to' index nulled возвращает остальную строку. так: string.substring(from) положительный или отрицательный...

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

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

Ответ 21

Попробуйте следующее:

<script>
    var x="foo_foo_foo_bar";
    for (var i=0; i<=x.length; i++) {
        if (x[i]=="_" && x[i+1]=="b") {
            break;
        }
        else {
            document.write(x[i]);
        }
    }
</script>

Вы также можете попробовать живой рабочий пример на http://jsfiddle.net/informativejavascript/F7WTn/87/.

Ответ 22

String.prototype.replaceAll = function(search, replacement) {
    var splitted = this.split('.');
    var returnVal = '';
    for(var i=0; i<splitted.length; i++) {
        returnVal = returnVal + splitted[i] + replacement;
    }
    returnVal = returnVal.substring(0, returnVal.length - replacement.length);
    return returnVal;
};

Ответ 23

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

str.substring(3, 7);

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