我有一根绳子, 12345.00, ,我希望它返回 12345.0.

我看过 trim, ,但看起来它只是修剪空白并且 slice 我不明白这是如何运作的。有什么建议么?

有帮助吗?

解决方案

您可以使用 子串 功能:

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

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

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

其他提示

可以使用切片 !你一定要确保你知道如何使用它。正#分别是相对于开始时,负号是相对于端部。

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

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

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

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

不过,如果你想的条件的删除的最后四个字符,只有当他们的究竟_bar

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

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

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

如果你需要更多的东西一般,除去一切之后(含)的最后底线,你可以做以下的(只要s保证包含至少一个下划线):

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

对于像你的榜样了一些,我会建议在substring这样做:

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

请注意,这将真正圆的数量,不过,我会想象希望,但也许不是:

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

使用JavaScript的切片功能:

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

此,可以使用在一个字符串的末尾以除去任何长度的“_bar”,...

正则表达式是你在找什么:

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

如何:

var myString = "12345.00";
myString.substring(0, myString.length - 1);
"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. ., 匹配最后一个字符,在本例中
  3. $, 匹配字符串结尾

使用正则表达式:

var aStr = "12345.00";
aStr = aStr.replace(/.$/, '');

尝试这种情况:

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

下面是我不认为我在其他的答案所看到的,只是为了好玩的替代品。

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

不为清晰或简单的切片或子,但允许你使用一些不错的阵列方法与串打,所以值得了解的。

var str = "test!";
var newStr = str.slice(0,-1); //test
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

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

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 指出的那样,似乎有一个内置函数可以实现此目的。这个解决方案显然比我的干净得多。使用 解析浮点型 其次是 至固定

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

在要删除的东西是接近字符串(在可变大小的字符串的情况下)的端部可以结合片()和SUBSTR例()。

我有标记,动态构建的字符串,由逗号分隔的锚标签的列表。该字符串是这样的:

var str = "<a>text 1,</a><a>text 2,</a><a>text 2.3,</a><a>text abc,</a>";

要删除最后一个逗号我做了如下:

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

@Jason S:

     

您可以使用片!你只需要   确保你知道如何使用它。   正编号是从相对于   开始,负数是   相对于端部。

     

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

对不起,我graphomany但后期被标记“jQuery的”早。因此, 不能使用 片()里面的jQuery因为片()是jQuery的方法与操作DOM元素,而不是子... 换句话说回答的 @乔恩埃里克森的建议真是完美的解决方案。

不过,你的方法工作了jQuery的功能,简单的Javascript里面。 需要说的是由于最后意见的讨论,即jQuery是非常多的可再生常常延长JS的比自己的父母最知名的ECMAScript。

下面也存在两种方法:

作为我们的:

string.substring(from,to) 如再加上如果“到”索引清零返回字符串的其余部分。这样: string.substring(from) 正或负...

和其他一些 - SUBSTR() - 它们提供的子串和 '长度' 的范围可以是仅正: string.substr(start,length)

另外一些维护者认为,最后的方法string.substr(start,length)不工作或工作差错的MSIE。

尝试这种情况:

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

您也可以尝试在 http://jsfiddle.net/informativejavascript/F7WTn现场工作示例/ 87 /

使用子让一切_bar的左侧。但首先你必须得到_bar的INSTR字符串中:

str.substring(3, 7);

3是开始和7是长度。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top