245px에서 "px"를 삭제하는 방법


답변:


182

245px245에서 변환하려면 다음을 실행하십시오.

parseInt('245px', 10);

선행 번호 만 유지하고 나머지는 모두 버립니다.


7
이것은 가장 가단 방법이지만, 당신은 항상 기수를 지정해야합니다parseInt('245px', 10)
저스틴 존슨

당신 말이 맞아요 : 문자열이 '0'으로 시작될 때 (이상한) 기본값은 8 진수입니다 ... 몇 번이나 오류가 발생했는지 parseInt('09')!
Don

4
값으로 parseInt는 35 초래 35.5px..using 같은 때 당신은 무엇합니까
무하마드 Umer

5
@MuhammadUmer : 'parseFloat'를 사용할 수 있습니다 ( w3schools.com/jsref/jsref_parsefloat.asp )
Don

38

사용하다

var size = parseInt('245px', 10);

여기서 10은 정의 하는 기수 이며 10 진수 값으로 parseInt구문 분석됩니다.

parseInt를 사용하지만 기수 없이 parseInt를 사용하지 마십시오.

parseInt () 함수는 문자열을 구문 분석하고 정수를 반환합니다.

서명은 parseInt(string, radix)

두 번째 인수는 parseInt가 10 진수 시스템을 사용하도록합니다.

  • ParseInt ()의 기본 입력 유형은 10 진수 (밑수 10)입니다.
  • 숫자가 "0"으로 시작하면 8 진수 (밑수 8)로 간주됩니다.
  • "0x"로 시작하면 16 진수로 간주됩니다.

왜? $ (this) .attr ( 'num')이 "08"이면 기수가없는 parsInt는 0이됩니다.


19

끝에 "px"가없는 픽셀 값을 변환합니다. parseFloat를 사용하십시오.

parseFloat('245px'); // returns 245      

참고 : parseInt를 사용하는 경우 값이 정수이면 값이 정확합니다. 값이 245.50px와 같은 10 진수이면 값은 245로 반올림됩니다.


정밀도를 만들기위한 편집이 거부되었으므로 이것을 주석에 넣을 parseFloat()것입니다. parseInt()( developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… & stackoverflow.com/ 참조) 질문 / 8555649 /… )
Wax

16

이것은 정확히 당신이 요구하는 것을 수행합니다 : 문자열의 마지막 두 문자를 제거하십시오.

s.substr(0, s.length-2);

5

놀랍게도 하위 문자열 메서드 s.substr(0, s.length-2);는 실제로 제거하는 데 훨씬 더 빠릅니다 px(예, 그다지 깔끔하게 보이지 않으며 공백이 있으면 남아있을 것입니다 "250px" -> "250"-vs "250 px" -> "250 ").

공백을 고려하고 싶다면 (아마도) .trim()함수 를 사용 하면 실제로 방법이 실제로 우수해질 substr정도로 테스트 속도가 느려 parseInt집니다.

사용의 추가 이점은 parseInt(s, 10)또한 유형 변환을 얻고이를 수학 함수에 즉시 적용 할 수 있다는 것입니다.

따라서 결국 결과로 무엇을 할 계획인지에 달려 있습니다.

  • 디스플레이 전용 인 경우 트림 없이substr 방법 을 사용하는 것이 가장 좋은 방법 일 것입니다.
  • 방금 픽셀없이 값이 다른 값과 동일합니다 있는지 확인하려는 경우 s.substr(0, s.length-2) == 0다음 사용 substr으로, 최선을 다 할 것입니다 방법을 "250 " == 250(심지어 공간)로됩니다true
  • 공간의 가능성을 설명하거나 다른 값에 추가하거나이를 사용하여 계산하려는 경우 parseInt경로 를 고려할 수 있습니다 .

http://jsperf.com/remove-px-from-coord

jspref에 대한 테스트는 공백을 고려합니다. 나는 또한 a s.split('px')[0]s.replace(/ *px/g, '')함수를 시도했는데 , 둘 다 느린 것으로 나타났습니다.

추가 테스트 케이스를 자유롭게 추가하십시오.


1

parseInt ()가 좋은 옵션이지만 다른 많은 솔루션을 갖는 것이 좋습니다.

var pixels = '245px';
Number(pixels.replace('px', ''));


0

나는 선호한다: "245px".replace(/px/,'')*1

입력을 둘러싸고 있지 않기 때문입니다.

또한 *1int로 캐스팅하기위한 것입니다.


0

substr()레거시 기능은 이제 ; 사용 substring()하는 대신, (구문은 동일한 이 경우 )

str.substring(0, str.length-2);

또는 다음을 사용하십시오 slice().

str.slice(0, -2);

slice()훨씬 깨끗해 보입니다, IMO. 음수 값은 끝부터 다시 계산됩니다.


rem값에 사용할 수 없기 때문에 덜 가치있는 기능을 만듭니다.
Alan Shortis
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.