Làm thế nào tôi có thể nhận được các ký tự cuối cùng của chuỗi


739

Tôi có

var id="ctl03_Tabs1";

Sử dụng JavaScript, làm cách nào tôi có thể có được năm ký tự hoặc ký tự cuối cùng?


6
Để có được nhân vật cuối cùng, tùy chọn tốt nhất sẽ là id.charAt (id.length-1)
Dilhan Jayathilake

64
Lưu ý cho độc giả: hãy chắc chắn đọc qua câu trả lời đầu tiên, đáng chú ý là câu trả lời từ @Terence.
Offirmo

Câu trả lời:


1085

EDIT: Như những người khác đã chỉ ra, sử dụng slice(-5)thay vì substr. Tuy nhiên, xem .split().pop()giải pháp ở dưới cùng của câu trả lời này cho một cách tiếp cận khác.

Câu trả lời gốc:

Bạn sẽ muốn sử dụng phương thức chuỗi Javascript .substr()kết hợp với thuộc .lengthtính.

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

Điều này nhận được các ký tự bắt đầu từ id.length - 5 và, vì đối số thứ hai cho .substr () bị bỏ qua, tiếp tục đến cuối chuỗi.

Bạn cũng có thể sử dụng .slice()phương pháp như những người khác đã chỉ ra dưới đây.

Nếu bạn chỉ đơn giản là muốn tìm các ký tự sau dấu gạch dưới, bạn có thể sử dụng điều này:

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

Điều này phân tách chuỗi thành một mảng trên dấu gạch dưới và sau đó "bật" phần tử cuối cùng ra khỏi mảng (đó là chuỗi bạn muốn).


5
Giải pháp đầu tiên có thể được thực hiện ngắn hơn và nhanh hơn, xem câu trả lời của tôi dưới đây. Tuy nhiên, tôi đồng ý với ý tưởng chia nhỏ và pop trong tình huống cụ thể này.
Terence

3
So với .slice (-5) và .substr (chiều dài - 5), .split().pop()là một thành công lớn. Nếu đây là thứ bạn đang sử dụng trong một vòng lặp và hiệu suất là rất quan trọng, bạn sẽ muốn ghi nhớ điều này.
nwayve 17/214

7
Trong thử nghiệm của bạn, .split().pop()vẫn là 5 triệu hoạt động mỗi giây. Đây không phải là vấn đề về hiệu năng cho đến khi nó là vấn đề về hiệu năng. ;)
Jamon Holmgren

1
@HutchMoore Bạn đúng rồi. Tôi đã chỉnh sửa câu trả lời của mình để đề cập rằng đó slicelà một lựa chọn tốt hơn vào thời điểm này.
Jamon Holmgren

1
Nếu bạn đang cố gắng áp dụng slicehoặc substrtrên một số (int), trước tiên hãy chuyển đổi nó thành chuỗi. Ví dụ:myVar.toString().slice(-5)
dnns

803

Đừng sử dụng .substr(). Sử dụng .slice()phương pháp thay vì vì nó tương thích trình duyệt chéo (xem IE).

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

chất nền () có giá trị âm không hoạt động trong IE


6
Có lát chấp nhận giá trị tiêu cực đó là tuyệt vời! slice()tham khảo: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/
mẹo

3
Tôi thích câu trả lời này, mặc dù câu trả lời được chấp nhận chỉ hoạt động tốt.
Dave Watts

3
Đây phải là câu trả lời, sử dụng lát theo cách này cũng hiệu quả hơn: jsperf.com/slice-vs-substr-and-length
thevinchi

Chrome 55 dường như nghĩ rằng chất nền nhanh hơn 20%
fantapop

6
Tôi giả sử lát sẽ chỉ hoạt động nếu nó phù hợp? Nếu kết thúc là _Tabs15gì? lát (-5) sẽ chỉ lấy abs15? split / pop hoạt động tốt hơn nhiều cho các độ dài khác nhau ...
Brian Ramsey

66

Bạn có thể sử dụng phương thức struct () với vị trí bắt đầu âm để lấy n ký tự cuối cùng. Ví dụ: điều này nhận được 5 cuối cùng:

var lastFiveChars = id.substr(-5);

Câu trả lời hay nhất và ngắn gọn. Không cần biết độ dài chuỗi gốc (đối với các trình duyệt hiện tại, vì vậy chúng tôi loại trừ IE)
Thanh Trung

60

Lấy ký tự cuối cùng thật dễ dàng, vì bạn có thể coi các chuỗi là một mảng:

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

Để có được một phần của một chuỗi, bạn có thể sử dụng substr chức năng hoặc các chuỗi chức năng:

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

Sự khác biệt giữa substrsubstringlà cách xử lý tham số thứ hai (tùy chọn). Trong substrđó, đó là số lượng ký tự từ chỉ mục (tham số đầu tiên). Trong substringđó, đó là chỉ số về nơi kết thúc cắt nhân vật.


1
bạn có một lỗi đánh máy nên là chất nền
George

24

Tập lệnh sau hiển thị kết quả để nhận 5 ký tự cuối cùng và 1 ký tự cuối cùng trong chuỗi bằng JavaScript:

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

Đầu ra:

Tab1 // Có 5 ký tự

1 // Có 1 ký tự


4
Không tương thích với IE, xem câu trả lời của tôi.
Terence


7

Không cần sử dụng substrphương thức để có được một char của một chuỗi!

lấy ví dụ về Jamon Holmgren, chúng ta có thể thay đổi phương thức cơ bản và chỉ cần chỉ định vị trí mảng:

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

5

Hàm Substr cho phép bạn sử dụng một dấu trừ để có được ký tự cuối cùng.

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

Nó rất linh hoạt. Ví dụ:

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

Một cách sẽ được sử dụng slice, như sau:

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

vì vậy giá trị của tempsẽ là "Tabs1".


3

Nếu bạn chỉ muốn ký tự cuối cùng hoặc bất kỳ ký tự nào ở vị trí biết, bạn có thể chỉ cần trat chuỗi dưới dạng một mảng! - các chuỗi được lặp lại trong javascript -

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

Tuy nhiên, nếu bạn cần nhiều hơn chỉ một ký tự thì sử dụng mối nối có hiệu quả

x.slice(-5);      //world

Về ví dụ của bạn

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

Để giải nén id, bạn có thể dễ dàng sử dụng split + pop

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

Điều này sẽ trả về id hoặc không xác định nếu không có id nào sau 'rating_element' :)


2

Giả sử bạn sẽ so sánh chuỗi con với kết thúc của chuỗi khác và sử dụng kết quả dưới dạng boolean, bạn có thể mở rộng lớp Chuỗi để thực hiện việc này:

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

Cho phép bạn làm như sau:

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

Tôi tìm thấy câu hỏi này và qua một số nghiên cứu tôi thấy đây là cách dễ nhất để có được nhân vật cuối cùng.

Như những người khác đã đề cập và bổ sung cho đầy đủ để có được 5 cuối cùng:

var last5 = id.substr(-5);

0

Cái này sẽ xóa dấu phẩy nếu nó là ký tự cuối cùng trong chuỗi ..

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

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

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

}

4
Điều này gần như không có liên quan đến câu hỏi ban đầu.
silasjmatson

0

Tôi thực sự có vấn đề sau đây và đây là cách tôi giải quyết nó bằng sự trợ giúp của câu trả lời ở trên nhưng cách tiếp cận khác nhau trong việc trích xuất id tạo thành một yếu tố đầu vào.

Tôi đã đính kèm đầu vào nộp với một

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

Và, khi nhấp vào nút đó, tôi muốn trích xuất id (là số) hoặc ID php ($ id) .

Vì vậy, đây là những gì tôi làm.

 $('.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
        });


-1

Tôi chắc chắn điều này sẽ làm việc ....

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

Giá trị của extensionsẽ là".pdf"

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.