JavaScript截断/切片/修剪掉字符串中的最后一个字符

我有一个字符串12345.00 ,我希望它返回12345.0

我已经看过trim ,但是看起来它只是在修剪空白和slice ,我看不到它如何工作。 有什么建议么?


#1楼

尝试这个:


您也可以在http://jsfiddle.net/informativejavascript/F7WTn/87/上尝试该在线示例。


#2楼

  1. (。*),多次捕获任何字符

 console.log("a string".match(/(.*).$/)[1]); 

  1. 。,匹配最后一个字符,在这种情况下

 console.log("a string".match(/(.*).$/)); 

  1. $,匹配字符串的结尾

 console.log("a string".match(/(.*).{2}$/)[1]); 


#3楼

尝试这个:

 const myString = "Hello World!"; console.log(myString.slice(0, -1)); 


#4楼

 const str = "test!"; console.log(str.slice(0, -1)); 


#5楼

使用JavaScript的slice函数:

 let string = 'foo_bar'; string = string.slice(0, -4); // Slice off last four characters here console.log(string); 

这可以用于删除任意长度的字符串末尾的“ _bar”。


#6楼

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

#7楼

使用正则表达式:

 let aStr = "12345.00"; aStr = aStr.replace(/.$/, ''); console.log(aStr); 


#8楼

@Jason S:

您可以使用切片! 您只需要确保您知道如何使用它即可。 正号相对于开头,负号相对于结尾。

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

对不起,我的graphomany但帖子早些时候被标记为“ jquery”。 因此, 您不能在jQuery中使用 slice() ,因为slice()是用于DOM元素而不是子字符串的jQuery方法。换句话说,答案@Jon Erickson提出了真正完美的解决方案。

但是,您的方法将无法在简单的Javascript中使用jQuery函数。 需要说的是,由于在评论中进行了最后的讨论,所以jQuery是JS的可更新扩展,而不是其父辈最著名的ECMAScript。

这里也存在两种方法:

作为我们的:

string.substring(from,to) 如加上“ to”索引为null,则返回字符串的其余部分。 所以: string.substring(from) 正或负...

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

还有一些维护者建议最后一个方法string.substr(start,length)不起作用,或者MSIE错误。


#9楼

https://jsfiddle.net/invos/w3zeqv6v/

https://stackoverflow.com/questions/34817546/javascript-how-to-delete-last-two-characters-in-a-string

如果您不需要空格,请使用修剪

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


#10楼

使用子字符串将所有内容移到_bar的左侧。 但是首先您必须在字符串中获得_bar的指令:

str.substring(3, 7);

3是开始,7是长度。


#11楼

您可以使用JavaScript字符串对象的substring方法:

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

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

但是,如果要有条件地删除最后四个字符,则只有它们恰好是 _bar

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

#12楼

if(str.substring(str.length - 4) == "_bar")
{
    str = str.substring(0, str.length - 4);
}

#13楼

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

 let str = "foo_bar"; console.log(str.replace(/_bar$/, "")); 


#14楼

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

const s = "your string";
const withoutLastFourChars = s.slice(0, -4);

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

 const s = "your_string"; const withoutLastChunk = s.slice(0, s.lastIndexOf("_")); console.log(withoutLastChunk); 


#15楼

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

我有一个带有标记的字符串,它是动态生成的,带有由逗号分隔的锚标记列表。 该字符串类似于:

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

要删除最后一个逗号,我执行了以下操作:

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

#16楼

这是我认为我没有在其他答案中看到的另一种选择,只是为了好玩。

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

虽然不像slice或substring那样清晰易懂,但确实允许您使用一些不错的数组方法来处理字符串,因此值得一读。


#17楼

最短的方法:

str.slice(0, -1); 

#18楼

您可以使用substring函数:

 let str = "12345.00"; str = str.substring(0, str.length - 1); console.log(str); 

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

 let str = "12345.00"; str = str.slice(0, -1); console.log(str); 


#19楼

怎么样:

 let myString = "12345.00"; console.log(myString.substring(0, myString.length - 1)); 


#20楼

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

 console.log(parseFloat('12345.00').toFixed(1)); 

请注意,尽管这实际上将对数字进行四舍五入,我想这是理想的,但也许并非如此:

 console.log(parseFloat('12345.46').toFixed(1)); 


#21楼

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

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指出的那样,似乎有一个内置函数。 该解决方案显然比我的解决方案干净得多。 使用parseFloat,然后使用toFixed


#22楼

您可以使用slice ! 您只需要确保您知道如何使用它即可。 正号相对于开头,负号相对于结尾。

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

你可能感兴趣的:(JavaScript截断/切片/修剪掉字符串中的最后一个字符)