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

StackOverflow https://stackoverflow.com/questions/952924

  •  11-09-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

var str = "12345.00";
str = str.substring(0, str.length - 1); // "12345.0"

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

var str = "12345.00";
str = str.slice(0, -1); // "12345.0"

Другие советы

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

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

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

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

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

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

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

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

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

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

var s = "your_string";
var withoutLastChunk = s.slice(0, s.lastIndexOf("_"));
// withoutLastChunk == "your"

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

alert(parseFloat('12345.00').toFixed(1)); // 12345.0

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

alert(parseFloat('12345.46').toFixed(1)); // 12345.5

Использование функции slice в JavaScript:

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

Это может быть использовано для удаления '_bar' в конце строки любой длины.

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

var str = "foo_bar";
alert(str.replace(/_bar$/, ""));

Как насчет:

var myString = "12345.00";
myString.substring(0, myString.length - 1);
"a string".match(/(.*).$/)[1] // => a strin

"a string".match(/(.*).$/) // returns ["a string", "a strin"]

"a string".match(/(.*).{2}$/)[1] // to get two chars off => a stri
  1. (.*), захватывает любой символ несколько раз
  2. ., соответствует последнему символу, в данном случае
  3. $, соответствует концу строки

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

var aStr = "12345.00";
aStr = aStr.replace(/.$/, '');

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

var myString = "Hello World!";
myString.slice(0, -1);

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

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

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

var str = "test!";
var newStr = str.slice(0,-1); //test
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

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

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

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

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

https://jsfiddle.net/invos/w3zeqv6v/

https://stackoverflow.com/questions/34817546/javascript-how-to-delete-last-two-characters-in-a-string

Просто используйте trim, если вам не нужны пробелы

"11.01 °C".slice(0,-2).trim()

В случаях, когда вы хотите удалить что-то, что находится близко к концу строки (в случае строк переменного размера), вы можете комбинировать 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);

@Джейсон С:

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

js> "12345.00".срез (0,-1) 12345.0

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

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

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

как наш:

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

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

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

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

<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/.

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

str.substring(3, 7);

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top