JavaScript chop/slice/trim off last character in string
我有一根绳子,
我看过
可以使用子字符串函数:
1 2 | var str ="12345.00"; str = str.substring(0, str.length - 1); //"12345.0" |
这是公认的答案,但根据下面的对话,slice语法更清晰:
1 2 | var str ="12345.00"; str = str.slice(0, -1); //"12345.0" |
你可以用切片!你只需要确保你知道如何使用它。正数相对于开始,负数相对于结束。
1 2 | js>"12345.00".slice(0,-1) 12345.0 |
可以使用javascript字符串对象的子字符串方法:
1 | s = s.substring(0, s.length - 4) |
它无条件地从字符串
但是,如果要有条件地删除最后四个字符,仅当它们是
1 2 | var re = /_bar$/; s.replace(re,""); |
最简单的方法是使用字符串的
1 2 | var s ="your string"; var withoutLastFourChars = s.slice(0, -4); |
如果需要更一般的方法删除最后一个下划线(包括)之后的所有内容,可以执行以下操作(只要
1 2 3 | var s ="your_string"; var withoutLastChunk = s.slice(0, s.lastIndexOf("_")); // withoutLastChunk =="your" |
对于像您的例子这样的数字,我建议您在
1 | alert(parseFloat('12345.00').toFixed(1)); // 12345.0 |
请注意,这实际上是将数字取整的,我认为这是需要的,但可能不是:
1 | alert(parseFloat('12345.46').toFixed(1)); // 12345.5 |
使用javascript的slice函数:
1 2 | var string = 'foo_bar'; string = string.slice(0, -4); // Slice off last four characters here |
这可以用来删除任何长度的字符串末尾的"_bar"。
正则表达式就是您要查找的:
1 2 | var str ="foo_bar"; alert(str.replace(/_bar$/,"")); |
怎么样:
1 2 | var myString ="12345.00"; myString.substring(0, myString.length - 1); |
试试这个:
1 2 | var myString ="Hello World!"; myString.slice(0, -1); |
1 2 3 4 5 | "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 | var aStr ="12345.00"; aStr = aStr.replace(/.$/, ''); |
1 2 3 4 5 | 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 |
这里有一个选择,我认为我没有看到其他答案,只是为了好玩。
1 2 3 | var strArr ="hello i'm a string".split(""); strArr.pop(); document.write(strArr.join("")); |
不像slice或substring那样清晰或简单,但允许您使用一些好的数组方法来处理字符串,因此值得了解。
1 2 | var str ="test!"; var newStr = str.slice(0,-1); //test |
如果要对浮点数进行常规舍入,而不只是修剪最后一个字符:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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
1 2 3 4 | 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
Just use trim if you don't want spaces
如果要删除靠近字符串末尾的内容(对于大小可变的字符串),可以将slice()和substr()组合起来。
我有一个带有标记的字符串,动态构建,用逗号分隔的锚标记列表。字符串类似于:
1 | var str ="text 1,text 2,text 2.3,text abc,"; |
为了删除最后一个逗号,我做了以下操作:
1 | str = str.slice(0, -5) + str.substr(-4); |
@Jason S:
You can use slice! You just have to
make sure you know how to use it.
Positive #s are relative to the
beginning, negative numbers are
relative to the end.js>"12345.00".slice(0,-1)
12345.0
抱歉,我的笔迹,但帖子之前被贴上了"jquery"的标签。所以,不能在jquery中使用slice(),因为slice()是jquery方法,用于操作dom元素,而不是子字符串…换言之,答案@jon erickson提出了一个非常完美的解决方案。
但是,您的方法将在简单的javascript中运行jquery函数。需要说的是,由于评论中最后一次讨论,jquery比他自己的父母最著名的ecmascript更经常更新JS的扩展。
这里还存在两种方法:
作为我们的:
另外一些提供子串范围和"长度"的-substr()-只能是正数:
还有一些维护人员建议,最后一个方法
试试这个:
1 2 3 4 5 6 7 8 9 | 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]); } } |
您还可以在http://jsfiddle.net/informativejavascript/f7wtn/87/上尝试实时工作示例。
使用子字符串将所有内容都放到u条的左侧。但是首先,你必须在字符串中得到条的instr:
1 | str.substring(3, 7); |
3是起始点,7是长度。