2011-04-29 6 views
2

사용하여 문자열에서 3, 4, 5, 6 편지 단어 수를 찾을 필요 3,4,5 또는 6 개의 chatacters가 있습니다. 스팬 블록 id="ans12"에 쉼표로 구분 된 한 줄에이 네 가지 수를 표시하십시오.나는 여기에 내 과제에 대한 답해야하는 질문입니다 VBScript를

다음은 내가 작성한 것입니다. 출력이 올바르지 않으며 이유가 확실하지 않습니다. 나는 아래에 게시 할 것이다. 내가 너와 함께 있었던 곳을 모두 알려줄 줄 알았어.

threematch = 0 
fourmatch = 0 
fivematch = 0 
sixmatch = 0 
totalmatch = "" 

cntArr = Array() 
cntArr = Split(tx_val," ") 
i=0 

For i=0 To Ubound(cntArr) Step 1 
If len(cstr(cntArr(i))) = 3 Then 
    threecount = threecount + 1 
ElseIf len(cstr(cntArr(i))) = 4 Then 
    fourcount = fourcount + 1 
ElseIf len(cstr(cntArr(i))) = 5 Then 
    fivecount = fivecount + 1 
ElseIf len(cstr(cntArr(i))) = 6 Then 
    sixcount = sixcount + 1 
End If 
i=i+1 

Next 

totalmatch = (threecount & ", " & fourcount & ", " & fivecount & ", " & sixcount & ".") 

document.getElementById("ans12").innerHTML = totalmatch 

답변

1

우선, 이것은 잘못된 동작을 야기하는 것이므로 For-Next 루프가 이미 사용자를 대신하여 카운터 i을 명시 적으로 증가시킵니다. 루프를 통과 할 때마다 i은 실제로 2 씩 증가합니다.

i=i+1 행을 삭제하면 스크립트가 의도 한대로 작동합니다.

둘째, 변수 이름이 일치하지 않아 예 : threematch 이상은 threecount으로 사용됩니다. 항상 변수를 명시 적으로 선언하고 (Dim 문) 코드의 맨 위에 Option Explicit을 써서 컴파일시 실수를 저지해야합니다. 순수한 기회로이 실수는 귀하의 특별한 경우에 실제로 어떤 오류도 일으키지 않습니다.

0
문제를 휴식

:

1) 목록, 단어 문자의 지정된 번호가 검사를 통해 목록

2) 반복 처리로 (공백에 휴식) 모든 단어를 추출, 일치하는 단어 길이가 나타날 때마다 카운터를 증가시킵니다.

3) 왜 안 VBScript로 사용할 총 카운트

+0

나는 코드에서 이것을 수행했지만 잘못된 카운트를 얻고 있다고 생각합니다. 내가 얻는 출력은 3, 4, 2, 1을 읽어야 할 때 2, 1, 1, 1입니다. –

1

자바 스크립트에서 정규식을 사용하여 편안 경우 밖으로 쓰기? 두 언어 모두 동일한 ECMA-262를 사용하므로 두 언어간에 패턴이 동일합니다. VBScript의 RegExp 개체는 예제와 동일한 작업을 수행 할 수 있습니다.

Set re = New RegExp 
re.IgnoreCase = True  ' equivalent to /i modifier 
re.Global = True   ' equivalent to /g modifier 
re.Pattern = "\b\w{3}\b" ' regex pattern without delimiters or modifiers 
Set colMatches = re.Execute(someStringOfWords) 
intCount = colMatches.Count 

는 MSDN에 의해 ​​중지하고 Microsoft Beefs Up VBScript with Regular Expressions 읽기, VBScript를에서 정규 표현식에 대한 자세한 내용을 보려면.

관련 문제