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");