web-dev-qa-db-ja.com

JavaScriptが文字列の最後の文字を切り取り/切り取り/切り取ります

私は文字列12345.00を持っています、そしてそれが12345.0を返すことを望みます。

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

1719
Phill Pafford

部分文字列 関数を使用できます。

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

これは受け入れられた答えです、しかし、以下の会話に従って、 スライス 構文ははるかに明確です:

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

スライス を使えます。使い方を知っていることを確認するだけです。正の数は先頭からの相対位置、負の数は末尾からの相対位置です。

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

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

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

文字列sから最後の4文字を無条件で削除します。

ただし、 条件付き で最後の4文字を削除したい場合は、 正確に _barの場合に限ります。

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

最も簡単な方法は、文字列のsliceメソッドを使用することです。これにより、負の位置を指定できます(文字列の末尾からのオフセットに対応)。

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

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

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

あなたの例のような数字のために、私はsubstringでこれをすることをお勧めします:

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

ただし、これは実際には数値を四捨五入することになりますが、これは望ましいことですが、そうではないかもしれません。

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

JavaScriptのスライス関数を使う:

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

これは、任意の長さの文字列の末尾にある '_bar'を削除するために使用できます。

27
Akshay Joshi

正規表現はあなたが探しているものです。

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

どうですか?

var myString = "12345.00";
myString.substring(0, myString.length - 1);
9
dariom

これを試して:

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

正規表現を使う:

var aStr = "12345.00";
aStr = aStr.replace(/.$/, '');
7
Marc477
"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. $は、文字列の末尾と一致します
7
juanpastas

これは私が他の答えで見たことがないと思う代わりに、ちょうど楽しみのためです。

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

スライスや部分文字列のように読みやすくも単純でもありませんが、Nice配列メソッドを使って文字列を操作することはできますので、知っておく価値があります。

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

最後の文字を切り捨てるのではなく、一般的な浮動小数点数の丸めを行いたい場合は、次のようにします。

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

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

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

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

スペースが不要な場合は、単にtrimを使用してください。

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

1
invos