如何使用 Javascript 切/切/修剪字符串中的最后一个字符?

IT技术 javascript slice trim
2021-01-12 17:44:55

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

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

6个回答

您可以使用子字符串函数:

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

@Kheu - 切片符号对我来说更清晰。我以前使用的是子字符串版本。谢谢!
2021-03-18 17:44:55
slicesubstring方法都是最相同; 除了slice()接受相对于字符串末尾的负索引,而不是substring,它会引发out-of-bound错误
2021-03-24 17:44:55
如果我错了,请原谅我,但您不需要再次将 str.substring 的值分配给 str 吗?喜欢str = str.substring(0, str.length -1);
2021-03-27 17:44:55
substring 是疯狂的微优化,我认为您不应该这样做。首先最大化可读性。然后根据需要优化低悬的果实。
2021-04-04 17:44:55
如果有人想知道,substring它比slice. jsperf.com/js-slice-vs-substring-test
2021-04-07 17:44:55

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

js>"12345.00".slice(0,-1)
12345.0
@SameerAlibhai 我同意你的看法,但该substring方法不能也用于动态字符串吗?通过使用 str.length 动态获取长度?
2021-03-16 17:44:55
需要补充的是,第一个索引是包含的,第二个是不包含的。
2021-03-18 17:44:55
这适用于删除最后一个字符,但要注意是否要删除可变数量的字符;.slice(0, -0)将返回一个空字符串!
2021-04-01 17:44:55
与公认的解决方案相比,这更优雅,甚至可以与动态创建的字符串一起使用
2021-04-04 17:44:55
我喜欢这种方式,因为它与 php 对 substr 函数的思考相吻合,更容易记住和即时编写。
2021-04-06 17:44:55

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

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

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

但是,如果您想有条件地删除最后四个字符,则仅当它们恰好是 _bar

var re = /_bar$/;
s.replace(re, "");
我喜欢这个,因为他还提供了替换指定结尾的帮助。
2021-03-17 17:44:55
如果字符串中有多个实例,第二个示例将仅删除“_bar”的第一个实例
2021-03-18 17:44:55
slice 这里更好。 s.slice(0, -4)
2021-03-30 17:44:55
或者: s.slice(0, -"_bar".length) (如果不想硬编码字符数,则很有用)
2021-04-04 17:44:55

最简单的方法是使用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);

对于像您示例这样的数字,我建议您这样做substring

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

请注意,这实际上会舍入这个数字,我认为这是需要的,但可能不是:

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

这不是错误的假设,OP 谈论的是字符串。你的假设是错误的,因为 OP 没有谈论四舍五入的数字。
2021-03-17 17:44:55
+1 这就是 OP 所需要的,忘记有要修剪的字符串的错误假设。
2021-03-19 17:44:55