2012-11-14 5 views
2

아래에있는 문자 중 하나인지 확인해야하는 자바 스크립트 코드 아래에 있습니다. 그러나 내가 예를 들어, "안녕하세요"를 입력 할 때 그것은 또한 'H', 'L', 'L 자바 스크립트 또는 같음

woord.charAt(i) == 'a' || 'e' || 'i' || 'o' || 'u' 

내가 무슨 일을 했는가

를 계산?

답변

7

문장을 작성하는 것처럼 코드를 작성하는 것처럼 보입니다.이 경우에는 제대로 변환되지 않습니다. 위 코드는 그 표현식이 실제로 어떻게되는지 보여줍니다.

각 문자열과 문자를 개별적으로 비교하거나 정규 표현식을 작성해야합니다. 정규식 더 컴팩트과 같을 것이다 :

/[aeiou]/.test(word.charAt(i)) 
+0

빠른 답변 감사드립니다. 나는 프로그래밍에 익숙하지 않아서 ur 코드를 사용할 수 없었다. 그러나 나는 그것을 약간 이해한다. – user1825015

+0

@ user1825015 정규식을 배우는 것이 빠를수록 문자열 파싱이 훨씬 까다로워집니다. – TheZ

+0

예, 프로그래밍 첫 해를 시작했습니다. 이 'Regex'를 빨리 배울 수 있기를 바랍니다. 코드가 훨씬 더 짧아지기 때문입니다. – user1825015

1

사용이 대신

var str = "My string"; 
var chr = ""; 
var nVowels = 0; 

for (pos = 0; pos < str.length; pos++){ 
    chr = str.charAt(pos).toLowerCase(); 
    if (chr == "a" || chr == "e" || chr == "i" || chr == "o" || chr == "u") 
    nVowels++; 
} 
+1

친애하는 신 ... 너무 많은 사람들이 비교하고, 대문자와 소문자 비교를 피하기 위해 toLowerCase()를 사용했을 수 있습니다. 심지어 스위치 케이스 구조도 더 깨끗 해 보일 것입니다. – TheZ

+0

빠른 답변 주셔서 감사합니다. 나는 'chr =='뒤에 ||를 추가하는 것을 잊었다. – user1825015

2

별도로 각 옵션을 선택해야하는 문제가 기본적으로

var c = woord.charAt(i); 
    if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u'){ 
    vowels++; 
    } 
+0

케이스 문제, toLowerCase() 사용 – TheZ

+0

감사합니다. 그것은 효과가 있었고 코드는 훨씬 짧았습니다. 감사의 친구 – user1825015

+1

@ user1825015'var c = woord.charAt (i) .toLowerCase();'를 사용하면 'A', 'E', 'I', 'O', 'U' '와 같은 "HELLO" – TheZ

0

에 다른 접근 방법을 사용해보십시오 그러나 이것은 추악하고 너무 잘 수행하지 않습니다. 차라리 받아 들인 문자의 배열을 만들고 배열 내의 현재 문자의 색인을 검사 할 것입니다.

var vowels = new Array('a', 'e', 'i', 'o'); 
var word = 'hello'; 
var vowelCount = 0; 
for(var x=0; x < word.length; x++){ 
    var ch = word.charAt(x).toLowerCase(); 
    if (vowels.indexOf(ch) > -1) 
    vowelCount++; 
} 
관련 문제