文字列 があり、12345.00
を返したいと思い12345.0
ます。
を見ましたtrim
が、空白をトリミングしているだけのようで、slice
これがどのように機能するかわかりません。助言がありますか?
文字列 があり、12345.00
を返したいと思い12345.0
ます。
を見ましたtrim
が、空白をトリミングしているだけのようで、slice
これがどのように機能するかわかりません。助言がありますか?
あなたはスライスを使うことができます!あなたはそれを使用する方法を知っていることを確認する必要があります。正の数値は先頭からの相対値、負の数値は末尾からの相対値です。
js>"12345.00".slice(0,-1)
12345.0
JavaScript 文字列オブジェクトのsubstringメソッドを使用できます。
s = s.substring(0, s.length - 4)
string から最後の 4 文字を無条件に削除しますs
。
ただし、最後の 4 文字を条件付きで削除したい場合は、それらが正確に _bar
.
var re = /_bar$/;
s.replace(re, "");
最も簡単な方法は、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);
あなたの例のような数については、これを行うことをお勧めしますsubstring
:
console.log(parseFloat('12345.00').toFixed(1));
ただし、これは実際には数値を四捨五入することに注意してください。これは望ましいことですが、そうではない可能性があります。
console.log(parseFloat('12345.46').toFixed(1));
探しているのは正規表現です。
let str = "foo_bar";
console.log(str.replace(/_bar$/, ""));
これを試して:
const myString = "Hello World!";
console.log(myString.slice(0, -1));
正規表現を使用:
let aStr = "12345.00";
aStr = aStr.replace(/.$/, '');
console.log(aStr);
どうですか:
let myString = "12345.00";
console.log(myString.substring(0, myString.length - 1));
1. (.*)
、任意の文字を複数回キャプチャします。
console.log("a string".match(/(.*).$/)[1]);
2. .
、この場合は最後の文字に一致します。
console.log("a string".match(/(.*).$/));
3. $
、文字列の終わりに一致します:
console.log("a string".match(/(.*).{2}$/)[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
編集:パオロが指摘しているように、これには組み込み関数が存在するようです。その解決策は明らかに私のものよりもはるかにきれいです。parseFloatの後にtoFixedを使用します
スペースが必要ない場合はトリムを使用してください
"11.01 °C".slice(0,-2).trim()
if(str.substring(str.length - 4) == "_bar")
{
str = str.substring(0, str.length - 4);
}
文字列の末尾に近いものを削除したい場合 (可変サイズの文字列の場合)、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);
これを試して:
<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/で実際の作業例を試すこともできます。
@ジェイソン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 のエラーで機能しないことを示唆しています。
部分文字列を使用して、_bar の左側のすべてを取得します。ただし、最初に文字列内の _bar の instr を取得する必要があります。
str.substring(3, 7);
3 はその開始、7 は長さです。