2013-07-29 2 views
1

내 코드의 동작에 관한 간단한 질문 : JavaScript에서 문자열의 첫 번째 문자와 마지막 문자를 제거하려고했습니다.내 하위 문자열이 이와 같이 작성할 때 왜 작동합니까?

var element = "<LightName>"; 
element = element.substring(1, element.length - 1); 

그러나 -1을 사용할 때 왜 그것뿐만 아니라 마지막 문자를 제거 않습니다 그래서 이것은 (실제로이 작동하도록되어 방식으로 작동)처럼 내 코드가 보이는 무엇인가? element.length의 시간에 문자열의 길이가 이론적으로 여전히 11 (부분 문자열이 아직 실행되지 않았기 때문에)이 아니어야하므로 길이 1 인 인덱스 1에서 부분 문자열로 시작합니다.

꽤 혼란 질문이 될 수도 있지만, 아마도 누군가가 그것을 조금 clearify 수 있습니다 ... 문자열에

답변

7

this link에서, 문자열 메소드 서명은 다음과 같습니다

string.substring(from, to) 

이것은 두 번째 매개 변수가 부분 문자열의 길이가 아니라 끝 위치라는 것을 의미합니다.

+0

오 오케이. 오인 된 부분 문자열을 오해 한 것 같습니다. 그것이 꼭 맞는 위치라면 절대적으로 의미가 있습니다. 고맙습니다! – beta

+1

OP가 생각한 바는 [substr] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr) – usr2564301

+0

@Jongware 맞습니다. 이 PHP와 함께. +1 왜냐하면 나는 JS에도 똑같은 방법이 있다는 것을 몰랐기 때문이다. – beta

1

인수는 다음과 같습니다 substring(FROM_INDEX, TO_INDEX)

지수는 0에서 시작하여 length - 1까지 간다.

문자열이 0에서 11 자 길이 문자열의 인덱스가 시작이며 문자열이 "abcd" 경우 그래서, 당신은 4 (길이)에 인덱스 1에서 문자열을 복용하고 10

에서 끝나는 경우 - 1 그래서 당신은 (괄호를 건너) 귀하의 경우에는

"bcd"를 얻을 :

var element = "<LightName>"; 
element = element.substring(1, element.length - 1); 
+0

답장을 보내 주셔서 감사합니다.하지만 -2이 아닙니다.).지금은 이해하지만 두 번째 매개 변수는 길이가 아니라 위치가되기 때문입니다. – beta

+1

도와 드리겠습니다. 오타가 잘못되었습니다 :) –

1

은 (내가 W3 학교는 인용에 최고의 장소 밤은 알고 있지만, 명확하게 보여줍니다)

string.substring(from, to) 

그것의 길이가 아닌 그것을 전체 라인이 실행될 때까지 변경 었소은 "을"의 인수,

2

.substring은 매개 변수로 시작 위치와 끝 위치를 갖습니다. .substr 오프셋 및 길이는 예를 들어

을 매개 변수로했습니다

var a = "abcdefghijklmnopqrstuvwxyz" 
var s = a.substring(5, 11) // fghijk 
var s2 = a.substr(5, 11) // fghijklmnop 
1

당신의 문자열의 길이가 귀하의 기능 지수 (11-1)에 인덱스 1에서 문자열을 얻을 말한다 (11)이기 때문에 10 그러나 하위 문자열에는 마지막 색인이 포함되지 않습니다. 그래서 효과적으로 인덱스 1부터 인덱스에 문자열을 얻을 첫 번째 인수가 0 두 번째 인수로 시작하는 인덱스를 사용하여 위치를 시작 9.

1
.substring(first,second); 

최종 위치이지만 첫 번째, 두 번째까지 독점 수단을하지만 두 번째 아니다 포함.

관련 문제