JavaScript切掉/切掉/修剪字符串中的最后一个字符
我有一个字符串,JavaScript切掉/切掉/修剪字符串中的最后一个字符,javascript,slice,trim,Javascript,Slice,Trim,我有一个字符串,12345.00,我希望它返回12345.0 我已经看过了trim,但它看起来只是在修剪空白和slice,我看不出这是如何工作的。有什么建议吗?您可以使用以下功能: let str=“12345.00”; str=str.substring(0,str.length-1); console.log(str)那么: 让myString=“12345.00”; log(myString.substring(0,myString.length-1))对于像您的示例这样的数字,我建议
12345.00
,我希望它返回12345.0
我已经看过了trim
,但它看起来只是在修剪空白和slice
,我看不出这是如何工作的。有什么建议吗?您可以使用以下功能:
let str=“12345.00”;
str=str.substring(0,str.length-1);
console.log(str)代码>那么:
让myString=“12345.00”;
log(myString.substring(0,myString.length-1))代码>对于像您的示例这样的数字,我建议在子字符串上执行此操作:
console.log(parseFloat('12345.00').toFixed(1))代码>如果要对浮点进行常规舍入,而不是仅修剪最后一个字符:
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
编辑:正如保罗所指出的,似乎有一个内置的功能。这个解决方案显然比我的要干净得多。使用后接您可以使用!你只需要确保你知道如何使用它。正数与开头有关,负数与结尾有关
js>"12345.00".slice(0,-1)
12345.0
@贾森S:
你可以用切片!你只需要
确保你知道如何使用它。
正#s是相对于
首先,负数是
相对于终点
js>"12345.00".slice(0,-1)
12345.0
js>“12345.00”。切片(0,-1)
12345.0
很抱歉我的笔误,但帖子早些时候被标记为“jquery”。因此,您不能在jQuery中使用切片(),因为切片()是用于DOM元素操作的jQuery方法,而不是子字符串。。。
换句话说,回答@Jon Erickson建议真正完美的解决方案
然而,您的方法将在简单Javascript中使用jQuery函数。
需要指出的是,由于上一次在评论中的讨论,jQuery是JS的可更新扩展,比他自己的父级最有名的ECMAScript要多得多
这里还有两种方法:
作为我们的:
string.substring(from,to)
as plus if'to'index null返回字符串的其余部分。因此:
string.substring(from)
正或负
以及其他一些提供子字符串范围和“长度”的-substr()-只能为正:
string.substr(开始,长度)
另外,一些维护人员建议最后一个方法string.substr(start,length)
对MSIE不起作用或有错误。使用substring将所有内容放到_条的左侧。但首先,你必须在字符串中获得_bar的指令:
str.substring(3, 7);
const s = "your string";
const withoutLastFourChars = s.slice(0, -4);
3表示开始,7表示长度。您可以使用JavaScript字符串对象的方法:
s = s.substring(0, s.length - 4)
它无条件地从字符串s
中删除最后四个字符
但是,如果要有条件地删除最后四个字符,仅当它们正好是\u bar
:
var re = /_bar$/;
s.replace(re, "");
正则表达式是您需要的:
let str=“foo_bar”;
log(str.replace(/\u bar$/,“”))代码>最简单的方法是使用字符串的切片
方法,该方法允许负位置(对应于字符串末尾的偏移):
如果需要更一般的方法来删除最后一个下划线之后(包括)的所有内容,可以执行以下操作(只要s
保证至少包含一个下划线):
const s=“您的字符串”;
const withoutLastChunk=s.slice(0,s.lastIndexOf(“”);
console.log(withoutLastChunk)代码>请尝试以下操作:
<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>
var x=“foo\u foo\u foo\u bar”;
对于(var i=0;i
(*),多次捕获任何字符
console.log(“一个字符串”.match(/(......$/)[1]);
尝试以下操作:
<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>
const myString=“你好,世界!”;
console.log(myString.slice(0,-1));
const str=“test!”;
console.log(str.slice(0,-1));
使用JavaScript的slice函数:
let string='foo_bar';
string=string.slice(0,-4);//在这里切掉最后四个字符
console.log(字符串);
使用正则表达式:
让aStr=“12345.00”;
应收账款=应收账款替换(/.$/,'');
console.log(aStr);
如果不需要空间,只需使用修剪即可
“11.01°C”。切片(0,-2).trim()
如果要删除靠近字符串末尾的内容(对于大小可变的字符串),可以将切片()和子字符串()组合在一起
我有一个带有标记的字符串,动态构建,带有一个由逗号分隔的锚标记列表。该字符串类似于:
var str = "<a>text 1,</a><a>text 2,</a><a>text 2.3,</a><a>text abc,</a>";
这里有一个我在其他答案中没有看到的选择,只是为了好玩
var strArr=“你好,我是一个字符串”。拆分(“”);
strArr.pop();
document.write(strArr.join(“”);
最短路径:
str.slice(0, -1);
演出
今天是2020.05.13,我在MacOs High Sierra v10.13.6上对Chrome v81.0、Safari v13.1和Firefox v76.0上选择的解决方案进行测试
结论
切片(0,-1)
(D)是短字符串和长字符串的快速或最快解决方案,建议作为快速跨浏览器解决方案
- 基于
子字符串
(C)和子字符串
(E)的解决方案速度很快
- 基于正则表达式(A,B)的解决方案是慢速/中速的
- 对于长字符串,解决方案B、F和G的速度较慢
- 对于短字符串,解决方案F最慢,对于长字符串,解决方案G最慢
细节
我对解决方案执行两个测试,E(),G(my)
- 对于8字符的短字符串(来自OP问题)-您可以运行它
- 对于1米长的字符串-您可以运行它
下面的代码片段介绍了解决方案
函数A(str){
返回str.replace(/.$/,'');
}
功能B(str){
返回str.match(/(.*)。$/)[1];
}
功能C(str){
返回str.substring(0,str.length-1);
}
功能D(str){
返回str.slice(0,-1);
}
功能E(str){
返回str.substr(0,str.length-1);
}
函数F(str){
设s=str.split(“”);
s、 pop();
str.slice(0, -1);
console.clear();
let str = "12345.00";
let a = str.slice(0, str.length -1)
console.log(a, "<= a");
console.log(str, "<= str is NOT changed");
console.clear();
let regExp = /.$/g
let b = str.replace(regExp,"")
console.log(b, "<= b");
console.log(str, "<= str is NOT changed");
console.clear();
let str = "12345.00";
let strToArray = str.split("")
console.log(strToArray, "<= strToArray");
let spliceMethod = strToArray.splice(str.length-1, 1)
str = strToArray.join("")
console.log(str, "<= str is changed now");