文字列の最後の文字を取得するにはどうすればよいですか


739

私が持っています

var id="ctl03_Tabs1";

JavaScriptを使用して、最後の5文字または最後の文字を取得するにはどうすればよいですか?


6
最後の文字を取得するには、id.charAt(id.length-1)
Dilhan Jayathilake 2013

64
読者への注意:最初の回答、特に@Terenceからの回答を必ず読んでください。
Offirmo 2013年

回答:


1085

編集:他の人が指摘したように、のslice(-5)代わりにを使用してくださいsubstrただし、.split().pop()別のアプローチについては、この回答の下部にあるソリューションを参照してください。

元の答え:

プロパティ.substr()と組み合わせてJavaScript文字列メソッドを使用する必要があり.lengthます。

var id = "ctl03_Tabs1";
var lastFive = id.substr(id.length - 5); // => "Tabs1"
var lastChar = id.substr(id.length - 1); // => "1"

これは、id.length-5で始まる文字を取得し、.substr()の2番目の引数が省略されているため、文字列の最後まで続きます。

.slice()他の人が以下で指摘している方法を使用することもできます。

アンダースコアの後の文字を探すだけの場合は、次のように使用できます。

var tabId = id.split("_").pop(); // => "Tabs1"

これにより、文字列がアンダースコア上の配列に分割され、配列から最後の要素(必要な文字列)が「ポップ」されます。


5
最初の解決策は、より短く、より速くすることができます。以下の私の答えを参照してください。しかし、私はこの特定の状況での分割とポップのアイデアに同意します。
Terence

3
.slice(-5)および.substr(length-5)と比較する.split().pop()と、パフォーマンスに大きな影響があります。これがループで使用しているものであり、パフォーマンスが重要な場合は、このことを覚えておく必要があります。
nwayve 2014

7
あなたのテストで.split().pop()は、毎秒500万の操作です。それは、パフォーマンスの問題になるまで、パフォーマンスの問題ではありません。;)
Jamon Holmgren 2014

1
@HutchMooreあなたは正しいです。sliceこの時点でより良いオプションであることを言及するために私の回答を編集しました。
Jamon Holmgren

1
適用しようとしている場合、sliceまたはsubstr数値(int)を使用している場合は、まずそれを文字列に変換します。例えばmyVar.toString().slice(-5)
DNNS

803

使用しないでください.substr().slice()クロスブラウザ互換であるため、代わりにこのメソッドを使用してください(IEを参照)。

const id = "ctl03_Tabs1";
console.log(id.slice(id.length - 5)); //Outputs: Tabs1
console.log(id.slice(id.length - 1)); //Outputs: 1

負の値を持つsubstr()がIEで機能しない


6
はいスライスは負の値を受け入れるので素晴らしいです!slice()参照:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
Offirmo

3
私はこの答えを好みますが、受け入れられた答えはうまくいきます。
Dave Watts

3
これが答えになるはずです。この方法でスライスを使用すると、パフォーマンスも向上します。jsperf.com
vs

Chrome 55はsubstrが20%高速であると考えているようです
ファンタポップ2016年

6
スライスは一貫している場合にのみ機能すると思いますか?終わりがあったらどうなる_Tabs15?slice(-5)はつかむだけabs15ですか?スプリット/ポップはさまざまな長さではるかにうまく機能します...
ブライアンラムジー2017年

66

あなたは使用することができますSUBSTR()メソッドを最後のn文字を取得するために、負の開始位置と。たとえば、これは最後の5つを取得します。

var lastFiveChars = id.substr(-5);

ベストかつ短い答え。元の文字列の長さを知る必要はありません(現在のブラウザーのため、IEは除外します)
Thanh Trung

60

文字列を配列として扱うことができるため、最後の文字を取得するのは簡単です。

var lastChar = id[id.length - 1];

文字列のセクションを取得するには、substr関数またはsubstring関数を使用できます。

id.substr(id.length - 1); //get the last character
id.substr(2);             //get the characters from the 3rd character on
id.substr(2, 1);          //get the 3rd character
id.substr(2, 2);          //get the 3rd and 4th characters

substrとは、substring第二の(オプション)のパラメータを処理する方法です。ではsubstr、インデックスからの文字数です(最初のパラメーター)。ではsubstring、文字のスライスが終了する場所のインデックスです。


1
タイプミスがありますsusbstrはsubstrである必要があります
George

24

次のスクリプトは、JavaScriptを使用して文字列の最後の5文字と最後の1文字を取得した結果を示しています。

var testword='ctl03_Tabs1';
var last5=testword.substr(-5); //Get 5 characters
var last1=testword.substr(-1); //Get 1 character

出力:

Tabs1 // 5文字を得た

1 // 1文字取得


4
IEと互換性がありません。私の答えを参照してください。
Terence


7

substr文字列の単一の文字を取得するためにメソッドを使用する必要はありません!

Jamon Holmgrenを例にとると、substrメソッドを変更して、配列の位置を指定するだけです。

var id = "ctl03_Tabs1";
var lastChar = id[id.length - 1]; // => "1"

5

Substr関数を使用すると、マイナス記号を使用して最後の文字を取得できます。

var string = "hello";
var last = string.substr(-1);

それは非常に柔軟です。例えば:

// Get 2 characters, 1 character from end
// The first part says how many characters
// to go back and the second says how many
// to go forward. If you don't say how many
// to go forward it will include everything
var string = "hello!";
var lasttwo = string.substr(-3,2);
// = "lo"

4

1つの方法はslice、次のようにを使用することです。

var id="ctl03_Tabs1";
var temp=id.slice(-5);

の値はにtempなります"Tabs1"


3

最後の文字または任意の文字を既知の位置にしたい場合は、単に文字列を配列として扱うことができます!-文字列はJavaScriptで反復可能です-

Var x = "hello_world";
 x[0];                    //h
 x[x.length-1];   //d

ただし、複数のキャラクターが必要な場合は、スプライスを使用するのが効果的です

x.slice(-5);      //world

あなたの例について

"rating_element-<?php echo $id?>"

idを抽出するには、split + popを簡単に使用できます

Id= inputId.split('rating_element-')[1];

これはIDを返します。「rating_element」の後にIDがなかった場合は未定義になります:)


2

サブストリングを別のストリングの末尾と比較し、その結果をブール値として使用すると仮定すると、これを実現するためにStringクラスを拡張できます。

String.prototype.endsWith = function (substring) {
  if(substring.length > this.length) return false;
  return this.substr(this.length - substring.length) === substring;
};

次のことを実行できます。

var aSentenceToPonder = "This sentence ends with toad"; 
var frogString = "frog";
var toadString = "toad";
aSentenceToPonder.endsWith(frogString) // false
aSentenceToPonder.endsWith(toadString) // true

1
var id="ctl03_Tabs1";
var res = id.charAt(id.length-1);

私はこの質問を見つけ、いくつかの調査を通じて、これが最後の文字を取得する最も簡単な方法であることがわかりました。

他の人が言及し、最後の5を取得するための完全性のために追加したように:

var last5 = id.substr(-5);

0

これは、文字列の最後の文字である場合、コンマを削除します。

var str = $("#ControlId").val();

if(str.substring(str.length-1)==',') {

  var stringWithoutLastComma = str.substring(0,str.length-1);    

}

4
これは、元の質問にはほとんど関係ありません。
silasjmatson 2013年

0

私は実際には次の問題があり、これは上記の回答の助けを借りてどのように解決しましたが、入力要素からidを抽出する際の異なるアプローチです。

提出された入力を添付しました

id="rating_element-<?php echo $id?>"

そして、そのボタンがクリックされたときに、id(数値)またはphp ID ($ id)のみを抽出します。

だからここで私は何をします。

 $('.rating').on('rating.change', function() {
            alert($(this).val());
           // console.log(this.id);
           var static_id_text=("rating_element-").length;       
           var product_id =  this.id.slice(static_id_text);       //get the length in order to deduct from the whole string    
          console.log(product_id );//outputs the last id appended
        });

0

最後の5

var id="ctl03_Tabs1";
var res = id.charAt(id.length-5)
alert(res);

最終

   
 var id="ctl03_Tabs1";
 var res = id.charAt(id.length-1)
alert(res);


最初の例では、に変更charAtsubstrます。これで最後から5番目charAtが取得されます。
レギュラーJoe

-1

これはうまくいくと思います。

var string1="myfile.pdf"
var esxtenion=string1.substr(string1.length-4)

値はextensionなります".pdf"

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.