[javascript] substr과 substring의 차이점은 무엇입니까?

차이점은 무엇입니까

alert("abc".substr(0,2));

alert("abc".substring(0,2));

둘 다“ab”를 출력하는 것 같습니다.



답변

차이점은 두 번째 주장에 있습니다. 두 번째 인수 substring는 중지 할 인덱스 (포함하지는 않음)이지만 두 번째 인수 substr는 반환 할 최대 길이입니다.

연결?

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substr

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substring


답변

substring( MDN )은 매개 변수를로 사용 (from, to)합니다.
substr( MDN )은 매개 변수를로 사용 (from, length)합니다.

업데이트 : MDN은 substr레거시를 고려 합니다.

alert("abc".substr(1,2)); // returns "bc"
alert("abc".substring(1,2)); // returns "b"

substring또 다른 문자열 추출 방법 인 slice 와 같이 인덱스 를 기억할 수 있습니다 .

0에서 시작할 때 두 방법 중 하나를 사용할 수 있습니다.


답변

yatima2975의 답변에서 암시 된 것처럼 추가 차이점이 있습니다.

substr()음의 시작 위치를 문자열 끝의 오프셋으로 받아들입니다. substring()하지 않습니다.

에서 MDN :

start가 음수이면 substr ()은 문자열 끝에서 문자 인덱스로 사용합니다.

기능상의 차이점을 요약하면 다음과 같습니다.

substring(begin-offset, end-offset-exclusive)시작 오프셋이 0큰 곳

substr(begin-offset, length) 시작 오프셋도 음수 일 수 있습니다.


답변

내가 최근에 겪은 또 다른 문제는 IE 8에서는 "abcd".substr(-1)잘못 반환 "abcd"하지만 Firefox 3.6은 정상적으로 반환 "d"한다는 것입니다. slice둘 다에서 올바르게 작동합니다.

이 주제에 대한 자세한 내용은 여기를 참조하십시오 .


답변

가장 큰 차이점은

substr ()을 사용하면 반환 할 최대 길이를 지정할 수 있습니다.

substring ()을 사용하면 인덱스를 지정할 수 있으며 두 번째 인수는 포함되지 않습니다

substr ()과 substring () 사이에는 등가 인수 및 음수 인수 처리와 같은 추가적인 미묘한 부분이 있습니다. 또한 substring ()과 slice ()는 비슷하지만 항상 같은 것은 아닙니다.

  //*** length vs indices:
    "string".substring(2,4);  // "ri"   (start, end) indices / second value is NOT inclusive
    "string".substr(2,4);     // "ring" (start, length) length is the maximum length to return
    "string".slice(2,4);      // "ri"   (start, end) indices / second value is NOT inclusive

  //*** watch out for substring swap:
    "string".substring(3,2);  // "r"    (swaps the larger and the smaller number)
    "string".substr(3,2);     // "in"
    "string".slice(3,2);      // ""     (just returns "")

  //*** negative second argument:
    "string".substring(2,-4); // "st"   (converts negative numbers to 0, then swaps first and second position)
    "string".substr(2,-4);    // ""
    "string".slice(2,-4);     // ""

  //*** negative first argument:
    "string".substring(-3);   // "string"        
    "string".substr(-3);      // "ing"  (read from end of string)
    "string".slice(-3);       // "ing"        


답변

차이점은 두 번째 매개 변수입니다. 두 번째 매개 변수는 두 숫자 모두 두 가지 다른 것을 기대합니다.

하위 문자열을 사용할 때 두 번째 매개 변수는 포함하지 않는 첫 번째 색인입니다.

var s = "string";
s.substring(1, 3); // would return 'tr'

var s = "another example";
s.substring(3, 7); // would return 'ther'

substr을 사용할 때 두 번째 매개 변수는 하위 문자열에 포함 할 문자 수입니다.

var s = "string";
s.substr(1, 3); // would return 'tri'

var s = "another example";
s.substr(3, 7); // would return 'ther ex'


답변

큰 차이는되어 substr()있습니다 사용되지 않는 방법을 계속 사용할 수 있지만이 완전히 미래에 언젠가 제거 될 것으로 예상되기 때문에주의해서 사용해야합니다. 코드에서 사용을 제거하기 위해 노력해야합니다. 그리고 그 substring()방법은 성공했고 전자를 지정했다.