Javascript chop / slice /修剪string中的最后一个字符
我有一个string12345.00
想要它返回12345.0
我已经看过修剪,但只看到修剪空白和切片,我不明白这将如何工作。 有什么build议么 ?
你可以使用子string函数:
var str = "12345.00"; str = str.substring(0, str.length - 1);
这是被接受的答案,但根据下面的对话, 片语法更清晰:
var str = "12345.00"; str = str.slice(0, -1);
你可以用切片 ! 你只需要确保你知道如何使用它。 正数#是相对于开始,负数是相对于结束。
js>"12345.00".slice(0,-1) 12345.0
您可以使用JavaScriptstring对象的子string方法:
s = s.substring(0, s.length - 4)
无条件地删除strings
中的最后4个字符。
但是,如果要有条件地删除最后4个字符,只有当它们正好是 _bar
:
var re = /_bar$/; s.replace(re, "");
最简单的方法是使用string的slice
方法,该方法允许负位置(对应于string末尾的偏移量):
var s = "your string"; var withoutLastFourChars = s.slice(0, -4);
如果你需要更一般的东西来删除(包括)最后一个下划线之后的所有东西,你可以做下面的事情(只要s
保证包含至less一个下划线):
var s = "your_string"; var withoutLastChunk = s.slice(0, s.lastIndexOf("_")); // withoutLastChunk == "your"
对于像你的例子一样的数字,我会build议这样做的substring
:
alert(parseFloat('12345.00').toFixed(1)); // 12345.0
请注意,这实际上将数字整数,但是,我会想象是希望但可能不是:
alert(parseFloat('12345.46').toFixed(1)); // 12345.5
使用java脚本的切片function
var string='foo_bar'; string=string.slice(0,-4); //slice off last four characters here
这可以用来删除string末尾的'_bar',任何长度。
正则expression式就是你正在寻找的东西。
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
- (。*)多次捕获任何字符
- 匹配最后一个字符,在这种情况下
- $,匹配string的结尾
使用正则expression式:
var aStr = "12345.00"; aStr = aStr.replace(/.$/, '');
尝试这个
var myString = "Hello World!"; myString.slice(0,-1);
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 str = "test!"; var newStr = str.slice(0,-1); //test
如果你想做generics的generics,而不是仅仅修剪最后一个字符:
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
编辑:似乎有一个内置的function,如保罗指出。 这个解决办法显然比我的要干净得多。 使用parseFloat后跟toFixed
if(str.substring(str.length - 4) == "_bar") { str = str.substring(0, str.length - 4); }
尝试这个
<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/上的实际工作示例;
如果你想删除一些接近string末尾的东西(如果是可变大小的string),你可以组合slice()和substr()。
我有一个带标记的string,dynamic构build,用逗号分隔的一系列锚标签,string是这样的:
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);
@Jason S:
你可以用切片! 你只需要确保你知道如何使用它。 正数#是相对于开始,负数是相对于结束。
js>“12345.00”.slice(0,-1)12345.0
对不起我的graphomany,但后来被标记为“jquery”。 所以, 你不能在jQuery中使用 slice() ,因为slice()是用于DOM元素操作的jQuery方法,而不是子string…换句话说, @Jon Ericksonbuild议真正完美的解决scheme。
但是,你的方法将工作在jQueryfunction,简单的JavaScript内。 由于上次在评论中的讨论,需要说的是,jQuery比JS自己最熟悉的ECMAScript更经常地是JS的可延伸扩展。
这里也有两种方法:
作为我们的:
string.substring(from,to)
as加号,如果'to'索引为null,则返回string的其余部分。 所以: string.substring(from)
正面或负面…
和一些其他的 – substr() – 它提供了子string的范围和“长度”只能是正的: string.substr(start,length)
还有一些维护人员build议,最后一个方法string.substr(start,length)
不工作或MSIE的错误工作。
使用子string来获取_bar左侧的所有内容。 但是首先你必须得到string中_bar的指示。
str.substring(3,7);
3是开始,7是长度