我有一个字符串12345.00
,我希望它返回12345.0
。
我已经看过trim
,但是看起来它只是在修剪空白和slice
,我看不到它如何工作。 有什么建议么?
尝试这个:
您也可以在http://jsfiddle.net/informativejavascript/F7WTn/87/上尝试该在线示例。
console.log("a string".match(/(.*).$/)[1]);
console.log("a string".match(/(.*).$/));
console.log("a string".match(/(.*).{2}$/)[1]);
尝试这个:
const myString = "Hello World!"; 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); // Slice off last four characters here console.log(string);
这可以用于删除任意长度的字符串末尾的“ _bar”。
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
使用正则表达式:
let aStr = "12345.00"; aStr = aStr.replace(/.$/, ''); console.log(aStr);
@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错误。
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()
使用子字符串将所有内容移到_bar的左侧。 但是首先您必须在字符串中获得_bar的指令:
str.substring(3, 7);
3是开始,7是长度。
您可以使用JavaScript字符串对象的substring方法:
s = s.substring(0, s.length - 4)
它无条件删除字符串s
中的最后四个字符。
但是,如果要有条件地删除最后四个字符,则只有它们恰好是 _bar
:
var re = /_bar$/;
s.replace(re, "");
if(str.substring(str.length - 4) == "_bar")
{
str = str.substring(0, str.length - 4);
}
正则表达式是您要查找的内容:
let str = "foo_bar"; console.log(str.replace(/_bar$/, ""));
最简单的方法是使用字符串的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);
如果要删除接近字符串末尾的内容(对于可变大小的字符串),可以组合slice()和substr()。
我有一个带有标记的字符串,它是动态生成的,带有由逗号分隔的锚标记列表。 该字符串类似于:
var str = "text 1,text 2,text 2.3,text abc,";
要删除最后一个逗号,我执行了以下操作:
str = str.slice(0, -5) + str.substr(-4);
这是我认为我没有在其他答案中看到的另一种选择,只是为了好玩。
var strArr = "hello i'm a string".split(""); strArr.pop(); document.write(strArr.join(""));
虽然不像slice或substring那样清晰易懂,但确实允许您使用一些不错的数组方法来处理字符串,因此值得一读。
最短的方法:
str.slice(0, -1);
您可以使用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);
怎么样:
let myString = "12345.00"; console.log(myString.substring(0, myString.length - 1));
对于像您的示例这样的数字,建议您在substring
执行此操作:
console.log(parseFloat('12345.00').toFixed(1));
请注意,尽管这实际上将对数字进行四舍五入,我想这是理想的,但也许并非如此:
console.log(parseFloat('12345.46').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
编辑:就像Paolo指出的那样,似乎有一个内置函数。 该解决方案显然比我的解决方案干净得多。 使用parseFloat,然后使用toFixed
您可以使用slice ! 您只需要确保您知道如何使用它即可。 正号相对于开头,负号相对于结尾。
js>"12345.00".slice(0,-1)
12345.0