JavaScript 截断/切片/修剪字符串中的最后一个字符
-
11-09-2019 - |
题
我有一根绳子, 12345.00
, ,我希望它返回 12345.0
.
我看过 trim
, ,但看起来它只是修剪空白并且 slice
我不明白这是如何运作的。有什么建议么?
其他提示
可以使用切片 !你一定要确保你知道如何使用它。正#分别是相对于开始时,负号是相对于端部。
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”,...
正则表达式是你在找什么:
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
- (.*),多次捕获任意字符
- ., 匹配最后一个字符,在本例中
- $, 匹配字符串结尾
使用正则表达式:
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
编辑: 正如 Paolo 指出的那样,似乎有一个内置函数可以实现此目的。这个解决方案显然比我的干净得多。使用 解析浮点型 其次是 至固定
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的如何对删除-最后两字符-IN-A-串
只要使用修剪如果你不想空格
"11.01 °C".slice(0,-2).trim()
在要删除的东西是接近字符串(在可变大小的字符串的情况下)的端部可以结合片()和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);
@Jason S:
您可以使用片!你只需要 确保你知道如何使用它。 正编号是从相对于 开始,负数是 相对于端部。
JS> “12345.00” .slice(0,-1) 12345.0
对不起,我graphomany但后期被标记“jQuery的”早。因此, 不能使用的 片()里面的jQuery因为片()是jQuery的方法与操作DOM元素,而不是子... 换句话说回答的 @乔恩埃里克森的建议真是完美的解决方案。
不过,你的方法工作了jQuery的功能,简单的Javascript里面。 需要说的是由于最后意见的讨论,即jQuery是非常多的可再生常常延长JS的比自己的父母最知名的ECMAScript。
下面也存在两种方法:
作为我们的:
string.substring(from,to)
如再加上如果“到”索引清零返回字符串的其余部分。这样:
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 / 。
使用子让一切_bar的左侧。但首先你必须得到_bar的INSTR字符串中:
str.substring(3, 7);
3是开始和7是长度。