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 
  1. (。*)多次捕获任何字符
  2. 匹配最后一个字符,在这种情况下
  3. $,匹配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是长度