将字符串中的最后一个字符chop/slice/trim

JavaScript chop/slice/trim off last character in string

我有一根绳子,12345.00,我想把它还给12345.0

我看过trim,但它看起来只是在修剪空白和slice,我不知道这是如何工作的。有什么建议吗?


可以使用子字符串函数:

1
2
var str ="12345.00";
str = str.substring(0, str.length - 1); //"12345.0"

这是公认的答案,但根据下面的对话,slice语法更清晰:

1
2
var str ="12345.00";
str = str.slice(0, -1); //"12345.0"


你可以用切片!你只需要确保你知道如何使用它。正数相对于开始,负数相对于结束。

1
2
js>"12345.00".slice(0,-1)
12345.0


可以使用javascript字符串对象的子字符串方法:

1
s = s.substring(0, s.length - 4)

它无条件地从字符串s中删除最后四个字符。

但是,如果要有条件地删除最后四个字符,仅当它们是_bar时:

1
2
var re = /_bar$/;
s.replace(re,"");


最简单的方法是使用字符串的slice方法,它允许负位置(对应于字符串末端的偏移量):

1
2
var s ="your string";
var withoutLastFourChars = s.slice(0, -4);

如果需要更一般的方法删除最后一个下划线(包括)之后的所有内容,可以执行以下操作(只要s保证至少包含一个下划线):

1
2
3
var s ="your_string";
var withoutLastChunk = s.slice(0, s.lastIndexOf("_"));
// withoutLastChunk =="your"


对于像您的例子这样的数字,我建议您在substring上执行此操作:

1
alert(parseFloat('12345.00').toFixed(1)); // 12345.0

请注意,这实际上是将数字取整的,我认为这是需要的,但可能不是:

1
alert(parseFloat('12345.46').toFixed(1)); // 12345.5


使用javascript的slice函数:

1
2
var string = 'foo_bar';
string = string.slice(0, -4); // Slice off last four characters here

这可以用来删除任何长度的字符串末尾的"_bar"。


正则表达式就是您要查找的:

1
2
var str ="foo_bar";
alert(str.replace(/_bar$/,""));


怎么样:

1
2
var myString ="12345.00";
myString.substring(0, myString.length - 1);

试试这个:

1
2
var myString ="Hello World!";
myString.slice(0, -1);


1
2
3
4
5
"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
    var aStr ="12345.00";
    aStr = aStr.replace(/.$/, '');

    1
    2
    3
    4
    5
    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

    这里有一个选择,我认为我没有看到其他答案,只是为了好玩。

    1
    2
    3
    var strArr ="hello i'm a string".split("");
    strArr.pop();
    document.write(strArr.join(""));

    不像slice或substring那样清晰或简单,但允许您使用一些好的数组方法来处理字符串,因此值得了解。


    1
    2
    var str ="test!";
    var newStr = str.slice(0,-1); //test


    如果要对浮点数进行常规舍入,而不只是修剪最后一个字符:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    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

    编辑:正如保罗指出的,似乎有一个内置的函数。那个解决方案显然比我的要干净得多。使用parsefloat和tofixed


    1
    2
    3
    4
    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-how-to-delete-last-two-characters-in-a-string

    Just use trim if you don't want spaces

    "11.01 °C".slice(0,-2).trim()


    如果要删除靠近字符串末尾的内容(对于大小可变的字符串),可以将slice()和substr()组合起来。

    我有一个带有标记的字符串,动态构建,用逗号分隔的锚标记列表。字符串类似于:

    1
    var str ="text 1,text 2,text 2.3,text abc,";

    为了删除最后一个逗号,我做了以下操作:

    1
    str = str.slice(0, -5) + str.substr(-4);

    @Jason S:

    You can use slice! You just have to
    make sure you know how to use it.
    Positive #s are relative to the
    beginning, negative numbers are
    relative to the end.

    js>"12345.00".slice(0,-1)
    12345.0

    抱歉,我的笔迹,但帖子之前被贴上了"jquery"的标签。所以,不能在jquery中使用slice(),因为slice()是jquery方法,用于操作dom元素,而不是子字符串…换言之,答案@jon erickson提出了一个非常完美的解决方案。

    但是,您的方法将在简单的javascript中运行jquery函数。需要说的是,由于评论中最后一次讨论,jquery比他自己的父母最著名的ecmascript更经常更新JS的扩展。

    这里还存在两种方法:

    作为我们的:

    string.substring(from,to)as plus if'to'index nulled返回字符串的其余部分。所以:string.substring(from)阳性或阴性…

    另外一些提供子串范围和"长度"的-substr()-只能是正数:string.substr(start,length)

    还有一些维护人员建议,最后一个方法string.substr(start,length)对于msie不起作用或不起作用。


    试试这个:

    1
    2
    3
    4
    5
    6
    7
    8
    9
        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]);
            }
        }

    您还可以在http://jsfiddle.net/informativejavascript/f7wtn/87/上尝试实时工作示例。


    使用子字符串将所有内容都放到u条的左侧。但是首先,你必须在字符串中得到条的instr:

    1
    str.substring(3, 7);

    3是起始点,7是长度。