문자

2014-01-27 2 views
3

의 목록과 동일한 수 charAt 내가 문자

str.charAt (인덱스) { ".", "", "#"(세트에있는) 경우 자바 스크립트

에 다음과 같은 무언가를 원하는 경우, "$", ";", ":"}

그래,이게 단순해야한다는 것을 알고 있지만 구문을 올바로 볼 수없는 것 같습니다. 내가 지금 무엇입니까

theChar = str.charAt(i); 
if ((theChar === '.') || (theChar === ',') || (theChar === ...)) { 
    // do stuff 
} 

이 작동하지만 좋은 방법이 있어야합니다.

편집 : 그것은 좋은 아닌지 내가 이런 짓을하지만, 확실하지 :

var punc = { 
    ".":true, 
    ",":true, 
    ";":true, 
    ":":true 
}; 

if (punc[str.charAt[index]) { ... 
당신은 정규 표현식으로 그것을 할 수

답변

4

는 단순히 그 문자와 배열을 정의 배열에서 검색하십시오. 이를 수행하는 한 가지 방법은 다음과 같습니다.

var charsToSearch = [".", ",", "#", "$", ";", ":"]; 
var theChar = str.charAt(i); /* Wherever str and i comes from */ 

if (charsToSearch.indexOf(theChar) != -1) { 
    /* Code here, the char has been found. */ 
} 
+1

+1 정규식보다 빠릅니다. – L105

+0

@ L105 확실한가요? – Pointy

+0

jsPerf를 만들려고합니다. – L105

2

:

var theChar = str.charAt(i); 
if (/[.,#$;:]/.test(theChar)) { 
    // ... 
} 
+0

새로운 JavaScript 프로그래머에게는 그리 친절하지 않지만 실용적인 솔루션을 시연하는 것이 좋습니다. –

+0

@MattiasBuelens 새로운 자바 스크립트 프로그래머가 어디서 왔는지에 달려 있다고 생각합니다. 자바 스크립트를 배웠을 때쯤에는 오랫동안 정규 표현식에 대해 알고 있었을 것입니다. – Pointy

+0

아, 그게 내가하려고했던 것이지만, 10 개는 세트에 정신이 없어졌습니다. – lbutlr