22 ответов:
можно использовать slice! Вы просто должны убедиться, что вы знаете, как использовать его. Положительные #s относительно начала, отрицательные числа относительно конца.
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
используя функцию среза JavaScript:
var string = 'foo_bar'; string = string.slice(0, -4); // Slice off last four characters hereЭто может быть использовано для удаления '_bar' в конце строки, любой длины.
"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
- (.* ), захватывает любой символ несколько раз
- ., соответствует последнему символу, в данном случае
- $ соответствует концу строки
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 strArr = "hello i'm a string".split(""); strArr.pop(); document.write(strArr.join(""));Не так разборчиво или просто, как срез или подстрока, но позволяет вам играть со строкой, используя некоторые хорошие методы массива, поэтому стоит знать.
Если вы хотите сделать общее округление поплавков, а не просто обрезать последний символ:
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.0EDIT: похоже, что для этого существует встроенная функция, как указывает Паоло. Это решение, очевидно, намного чище, чем мое. Используйте parseFloat следовал по toFixed
https://jsfiddle.net/invos/w3zeqv6v/
просто используйте обрезку, если вы не хотите пробелов
"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);
Я предпочитаю функцию substring:
var str = "12345.00";
str = str.подстрока(стр 0,.длина - 1);
функция среза также может быть использована:
var str = "12345.00";
str = str.slice (-1); // передача отрицательного значения в качестве первого аргумента удаляет символы из конца. Это то же самое, что и str.slice (0, -1)
результат с обоими методами "12345.0".
@Jason S:
вы можете использовать slice! Вы просто должны убедитесь, что вы знаете, как использовать его. Положительные #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 ' 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-Длина.
Comments