2324

文字列 があり、12345.00を返したいと思い12345.0ます。

を見ましたtrimが、空白をトリミングしているだけのようで、sliceこれがどのように機能するかわかりません。助言がありますか?

4

25 に答える 25

3690

サブストリング関数を使用できます。

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

于 2009-06-04T20:35:48.930 に答える
1454

あなたはスライスを使うことができます!あなたはそれを使用する方法を知っていることを確認する必要があります。正の数値は先頭からの相対値、負の数値は末尾からの相対値です。

js>"12345.00".slice(0,-1)
12345.0
于 2009-06-04T21:41:42.480 に答える
272

JavaScript 文字列オブジェクトのsubstringメソッドを使用できます。

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

string から最後の 4 文字を無条件に削除しますs

ただし、最後の 4 文字を条件付きで削除したい場合は、それらが正確に _bar.

var re = /_bar$/;
s.replace(re, "");
于 2010-08-30T03:08:49.463 に答える
172

最も簡単な方法は、slice負の位置 (文字列の末尾からのオフセットに対応) を許可する文字列の方法を使用することです。

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

最後のアンダースコア以降 (およびそれを含む) のすべてを削除するために、より一般的なものが必要な場合は、次のようにすることができます (s少なくとも 1 つのアンダースコアが含まれていることが保証されている場合)。

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

于 2010-08-30T10:15:57.770 に答える
72

あなたの例のような数については、これを行うことをお勧めしますsubstring

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

ただし、これは実際には数値を四捨五入することに注意してください。これは望ましいことですが、そうではない可能性があります。

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

于 2009-06-04T20:42:16.673 に答える
23

探しているのは正規表現です。

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

于 2010-08-30T03:09:02.557 に答える
13

これを試して:

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

于 2013-08-28T20:31:43.333 に答える
11

正規表現を使用:

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

于 2015-07-29T04:58:25.460 に答える
9

どうですか:

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

于 2009-06-04T20:38:11.483 に答える
8

1. (.*)、任意の文字を複数回キャプチャします。

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

2. .、この場合は最後の文字に一致します。

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

3. $、文字列の終わりに一致します:

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

于 2012-12-28T04:38:31.777 に答える
4

最後の文字をトリミングするだけでなく、浮動小数点数の一般的な丸めを行う場合:

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を使用します

于 2009-06-04T20:47:07.550 に答える
3

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

スペースが必要ない場合はトリムを使用してください

"11.01 °C".slice(0,-2).trim()
于 2016-01-15T18:48:43.263 に答える
2
if(str.substring(str.length - 4) == "_bar")
{
    str = str.substring(0, str.length - 4);
}
于 2010-08-30T03:08:50.823 に答える
0

文字列の末尾に近いものを削除したい場合 (可変サイズの文字列の場合)、slice() と 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);
于 2016-08-19T18:17:38.640 に答える
-2

これを試して:

<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/で実際の作業例を試すこともできます。

于 2012-12-27T14:13:40.533 に答える
-4

@ジェイソンS:

スライスが使える!あなたはそれを使用する方法を知っていることを確認する必要があります. 正の数値は先頭からの相対値、負の数値は末尾からの相対値です。

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

私のグラフォマニーで申し訳ありませんが、投稿は以前に「jquery」とタグ付けされていました。したがって、slice()は部分文字列ではなく DOM 要素を操作するための jQuery メソッドであるため、jQuery 内でslice()を使用することはできません 。つまり、 @Jon Ericksonは本当に完璧なソリューションを提案します。

ただし、メソッドは単純な Javascript 内の jQuery 関数から機能します。コメントでの最後の議論のために、jQuery は彼自身の親である最も有名な ECMAScript よりもはるかに頻繁に JS の更新可能な拡張であると言う必要があります。

ここにも 2 つの方法があります。

私たちのように:

string.substring(from,to) 'to' インデックスが null の場合はプラスとして、文字列の残りを返します。そう: string.substring(from) 正または負...

およびその他の - substr() - サブストリングの範囲を提供し、「長さ」は正の値のみを指定できます。 string.substr(start,length)

string.substr(start,length)また、一部のメンテナーは、最後の方法が機能しないか、MSIE のエラーで機能しないことを示唆しています。

于 2010-08-03T16:52:38.940 に答える
-8

部分文字列を使用して、_bar の左側のすべてを取得します。ただし、最初に文字列内の _bar の instr を取得する必要があります。

str.substring(3, 7);

3 はその開始、7 は長さです。

于 2010-08-30T03:08:02.993 に答える