문자열의 마지막 문자를 얻는 방법


738

나는 가지고있다

var id="ctl03_Tabs1";

JavaScript를 사용하여 마지막 5 자 또는 마지막 문자를 어떻게 얻을 수 있습니까?


6
마지막 문자를 얻으려면 최상의 옵션은 id.charAt (id.length-1)입니다.
Dilhan Jayathilake

64
독자에 대한 참고 사항 : 첫 번째 답변, 특히 @Terence의 답변을 지나쳐 읽으십시오.
Offirmo

답변:


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 ()에 대한 두 번째 인수가 생략되므로 문자열의 끝까지 계속됩니다.

.slice()다른 사람들이 아래에 지적한 것처럼 이 방법을 사용할 수도 있습니다 .

밑줄 뒤의 문자를 찾으려면 다음을 사용할 수 있습니다.

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

이렇게하면 문자열이 밑줄의 배열로 분할 된 다음 배열에서 마지막 요소 (원하는 문자열)가 "팝핑"됩니다.


5
첫 번째 솔루션은 더 짧고 빠르게 만들 수 있습니다. 아래 답변을 참조하십시오. 그러나 나는이 특별한 상황에서 스플릿 앤 팝 아이디어에 동의합니다.
Terence

3
.slice (-5) 및 .substr (length-5)와 비교하면.split().pop() 성능이 크게 떨어집니다. 이것이 루프에서 사용하고 있고 성능이 중요한 경우이를 염두에 두십시오.
nwayve

7
귀하의 테스트에서 .split().pop()여전히 초당 5 백만 작업입니다. 성능 문제가 될 때까지 성능 문제가 아닙니다. ;)
Jamon Holmgren

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

IE에서 음수 값이 작동하지 않는 substr ()


6
네 슬라이스는 큰 음수 값을 허용합니다! slice()참조 : developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Offirmo

3
허용 된 답변이 제대로 작동하지만이 답변을 선호합니다.
Dave Watts

3
:이이 방법도 더 성능이 좋은이다 슬라이스 사용하여 대답해야 jsperf.com/slice-vs-substr-and-length
thevinchi

크롬 55 SUBSTR 20 % 더 빠른 생각하는 것 같다
fantapop

6
슬라이스가 일관성이있는 경우에만 작동한다고 가정합니까? 끝이 어쩌면 _Tabs15? slice (-5) 만 잡아야 abs15합니까? split / pop은 다양한 길이에서 훨씬 잘 작동합니다 ...
Brian Ramsey

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

차이 substrsubstring상기 제 (선택적) 매개 변수를 처리하는 방법이다. 에서 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

출력 :

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

한 가지 방법은 slice다음과 같이을 사용하는 것입니다 .

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

따라서의 가치는 temp입니다 "Tabs1".


3

마지막 문자 또는 알고있는 위치에있는 문자를 원한다면 단순히 배열로 문자열을 trat 할 수 있습니다! -문자열은 자바 스크립트에서 반복 가능합니다-

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

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


첫 번째 예에서는로 변경 charAt하십시오 substr. 즉 charAt얻는 다섯 번째에서-마지막 .
Regular 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.