2012-04-11 5 views
3

선행 점이있는 JavaScript 문자열이 있습니다. 나는 자바 스크립트 바꾸기 기능을 사용하여 선행 점을 제거하고 싶다. 다음 코드를 시도했다.선행 점을 제거하는 Javascript 함수

var a = '.2.98»'; 
document.write(a.replace('/^(\.+)(.+)/',"$2")); 

그러나 이것은 작동하지 않습니다. 어떤 아이디어?

답변

7

다음은 그대로 문자열의 나머지를 떠나 빈 문자열로 문자열의 시작 부분에있는 점을 대체 : 당신이 필요하지 않은 경우

a.replace(/^\./, "") 
+0

Nikita 덕분에 솔루션이 완벽하게 작동했습니다. –

+1

다른 의견에서 말했듯이 이것은 전혀 좋은 생각이 아닙니다. 정규 표현식이 필요하지 않습니다. 느리고 비효율적입니다. –

+0

@ColinHebert 그런 미세한 최적화는 조건부 가치가있는 것은 아닙니다. document.write는 실제 작업의 99 %가 어쨌든 여기에서 수행됩니다. – Esailija

0

정규식이 잘못되었습니다.

var a = '.2.98»'; 
document.write(a.replace('/^\.(.+)/',"$1")); 

당신은 선행 점에 (.+) 일치하도록했지만, 그 대신 \.을 원 작동하지 않습니다.

7

이 정규 표현식에하지 마십시오.

간단한 charAt()substring() 또는 substr()은 (이 경우에만 charAt(0).이다) 충분할 것이다.


자료 :

+0

문자열에 점이없는 경우가 있습니다. 그게 내가 정규식을 사용하는 이유. –

+2

그래서 charAt()를 사용하여 점이 있는지 없는지 확인해야합니다. 거기에 정규식 엔진을 사용할 필요가 전혀 없습니다. –

+0

감사합니다. 콜린. 나는 이해했다. –

0

간단하게 :

if (a.charAt(0)=='.') { 
    document.write(a.substr(1)); 
} else { 
    document.write(a); 
} 
+0

'indexOf'를 할 필요가 없습니다. 'indexOf'를 사용하면 점을 얻을 때까지 모든 문자를 볼 수 있지만, 결국에는 첫 번째 문자에만 관심이 있습니다. –

+0

콜린, 고마워 - 고쳤다. – naivists

관련 문제