Bagaimana saya bisa mendapatkan karakter terakhir dari sebuah string


739

saya sudah

var id="ctl03_Tabs1";

Dengan menggunakan JavaScript, bagaimana saya bisa mendapatkan lima karakter terakhir atau karakter terakhir?


6
Untuk mendapatkan karakter terakhir, pilihan terbaik adalah id.charAt (id.length-1)
Dilhan Jayathilake

64
Catatan untuk pembaca: pastikan untuk membaca melewati jawaban pertama, terutama yang dari @Terence.
Offirmo

Jawaban:


1085

EDIT: Seperti yang telah ditunjukkan orang lain, gunakan slice(-5)sebagai ganti substr. Namun, lihat .split().pop()solusi di bagian bawah jawaban ini untuk pendekatan lain.

Jawaban asli:

Anda akan ingin menggunakan metode string Javascript yang .substr()dikombinasikan dengan .lengthproperti.

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

Ini mendapatkan karakter mulai dari id.length - 5 dan, karena argumen kedua untuk .substr () dihilangkan, berlanjut ke akhir string.

Anda juga dapat menggunakan .slice() metode ini seperti yang ditunjukkan orang lain di bawah ini.

Jika Anda hanya mencari untuk menemukan karakter setelah garis bawah, Anda dapat menggunakan ini:

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

Ini membagi string menjadi array pada garis bawah dan kemudian "muncul" elemen terakhir dari array (yang merupakan string yang Anda inginkan).


5
Solusi pertama dapat dibuat lebih pendek dan lebih cepat, lihat jawaban saya di bawah ini. Namun, saya setuju dengan ide split dan pop dalam situasi khusus ini.
Terence

3
Dibandingkan dengan .slice (-5) dan .substr (panjang - 5), .split().pop()adalah hit kinerja besar. Jika ini adalah sesuatu yang Anda gunakan dalam satu lingkaran dan kinerja sangat penting, Anda harus selalu mengingatnya.
nwayve

7
Dalam pengujian Anda, .split().pop()masih 5 juta operasi per detik. Ini bukan masalah kinerja sampai masalah kinerja. ;)
Jamon Holmgren

1
@HutchMoore Anda benar. Saya telah mengedit jawaban saya untuk menyebutkan bahwa sliceini adalah pilihan yang lebih baik pada saat ini.
Jamon Holmgren

1
Jika Anda mencoba menerapkan sliceatau substrpada nomor (int), konversikan ke string terlebih dahulu. MisalnyamyVar.toString().slice(-5)
dnns

804

Jangan gunakan .substr(). Gunakan .slice()metode ini sebagai gantinya karena ini kompatibel lintas browser (lihat IE).

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

substr () dengan nilai negatif tidak berfungsi di IE


6
Ya slice menerima nilai negatif yang bagus! slice()referensi: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Offirmo

3
Saya lebih suka jawaban ini, meskipun yang diterima berfungsi dengan baik.
Dave Watts

3
Ini seharusnya jawabannya, menggunakan slice dengan cara ini juga lebih performant: jsperf.com/slice-vs-substr-and-length
thevinchi

Chrome 55 tampaknya berpikir substr lebih cepat 20%
fantapop

6
Saya menganggap slice hanya akan berfungsi jika konsisten? bagaimana jika akhirnya _Tabs15? slice (-5) hanya akan ambil abs15? split / pop bekerja jauh lebih baik untuk panjang yang bervariasi ...
Brian Ramsey

66

Anda dapat menggunakan metode substr () dengan posisi awal negatif untuk mengambil n karakter terakhir. Misalnya, ini mendapatkan 5 terakhir:

var lastFiveChars = id.substr(-5);

Jawaban terbaik dan singkat. Tidak perlu tahu panjang string asli (untuk browser saat ini, jadi kami mengecualikan IE)
Thanh Trung

60

Mendapatkan karakter terakhir itu mudah, karena Anda dapat memperlakukan string sebagai array:

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

Untuk mendapatkan bagian dari string, Anda dapat menggunakan substr fungsi atau substring fungsi:

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

Perbedaan antara substrdan substringbagaimana parameter kedua (opsional) diperlakukan. Di substr, itu jumlah karakter dari indeks (parameter pertama). Di substring, itu adalah indeks di mana karakter mengiris harus berakhir


1
Anda memiliki typo susbstr harus substr
George

24

Script berikut menunjukkan hasil untuk mendapatkan 5 karakter terakhir dan 1 karakter terakhir dalam sebuah string menggunakan JavaScript:

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

Keluaran:

Tab1 // Mendapat 5 karakter

1 // Punya 1 karakter


4
Tidak kompatibel dengan IE, lihat jawaban saya.
Terence


7

Tidak perlu menggunakan substrmetode untuk mendapatkan satu karakter string!

mengambil contoh Jamon Holmgren kita dapat mengubah metode substr dan cukup tentukan posisi array:

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

5

Fungsi Substr memungkinkan Anda untuk menggunakan minus untuk mendapatkan karakter terakhir.

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

Ini sangat fleksibel. Sebagai contoh:

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

Salah satu cara akan digunakan slice, seperti ikuti:

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

jadi nilai tempakan menjadi "Tabs1".


3

Jika Anda hanya ingin karakter terakhir atau karakter apa pun pada posisi tahu, Anda dapat menggunakan string sebagai array! - string dapat diulang dalam javascript -

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

Namun jika Anda membutuhkan lebih dari satu karakter, gunakan splice efektif

x.slice(-5);      //world

Mengenai contoh Anda

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

Untuk mengekstrak id Anda dapat dengan mudah menggunakan split + pop

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

Ini akan mengembalikan id, atau tidak terdefinisi jika tidak ada id setelah 'rating_element' :)


2

Dengan asumsi Anda akan membandingkan substring dengan ujung string lain dan menggunakan hasilnya sebagai boolean Anda dapat memperluas kelas String untuk mencapai ini:

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

Mengizinkan Anda melakukan hal berikut:

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

Saya menemukan pertanyaan ini dan melalui beberapa penelitian saya menemukan ini menjadi cara termudah untuk mendapatkan karakter terakhir.

Seperti yang disebutkan orang lain dan ditambahkan untuk kelengkapan untuk mendapatkan 5 terakhir:

var last5 = id.substr(-5);

0

Yang ini akan menghapus koma jika itu adalah karakter terakhir dalam string ..

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

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

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

}

4
Ini hampir tidak ada hubungannya dengan pertanyaan awal.
silasjmatson

0

Saya benar-benar memiliki masalah berikut dan ini bagaimana saya menyelesaikannya dengan bantuan jawaban di atas tetapi pendekatan yang berbeda dalam mengekstraksi id membentuk elemen input.

Saya telah melampirkan input yang diajukan ke

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

Dan, ketika tombol itu diklik saya ingin mengekstrak id (yang merupakan nomor) atau hanya php ID ($ id) .

Jadi di sini apa yang saya lakukan.

 $('.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 terakhir

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

Terakhir

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


Untuk contoh pertama, ubah charAtke substr. Itu charAtmendapat yang kelima dari terakhir .
Reguler Joe

-1

Saya yakin ini akan berhasil ....

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

Nilai extensionakan".pdf"

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.