2013-01-09 1 views
-1

텍스트 세트가있는 웹 애플리케이션을 구축 중입니다.첫 번째 Regex.match에서 루프를 종료하고 다른 작업을 수행하십시오.

예 :

마야 문명 -

마야 문명 주 다른 메소 아메리카 문명과 많은 기능을 TextSet1 인해이 지역을 특징으로 상호 작용과 문화 확산의 높은 정도. 글쓰기, 서사 및 달력과 같은 발전은 마야에서 시작된 것이 아니 었습니다.

마야 영향 -

TextSet2 그러나, 그들의 문명은 완전히을 개발했다. 온두라스, 벨리즈, 과테말라, 서부 엘살바도르에서 마야 지역에서 1,000km 이상 떨어진 중부 멕시코까지 마야 영향을 탐지 할 수 있습니다. 외부의 많은 영향은 마야 예술과 건축에서 발견됩니다. 마야 예술과 건축은 외부의 직접적인 정복보다는 무역과 문화 교류에서 비롯된 것으로 생각됩니다.

들은이 Gridview에 저장되기 때문에 각 TextSet 고유 인덱스가 질문. 코드에서 첫 번째 항목을 TextSet1 문자열에 먼저 저장하여 GridView의 각 항목 또는 인덱스를 반복합니다.

그런 다음 For loop이 해당 문자열을 반복하여 count과 일치하는지 확인하십시오. 일치하는 단어의 수는 Maya입니다. 내가 달성하기 위해 노력하고 무엇

For Each item As GridViewRow In Me.GridViewSearchResult.Rows 
     Dim txtStr as Label = DirectCast(item.FindControl("TextSet1"), Label) 
     Dim Str = txtStr.Text.toString 

    For i as Integer = 0 to Str.Length - 1 

    Dim count As new Integer 
    count = Regex.Matches (Str, "Maya", RegexOptions.IgnoreCase).Count 

    Next 
Next 

은 시작에, 프로그램이 count을 사용하여 계산 한 후 TextSet1 또는 Str를 처리하여 시작하는 것이 얼마나 Str 단어 Maya의 많은 발생. Maya의 첫 번째 발생시 Str에 전체 세트를 데이터베이스에 저장 한 다음 루프를 종료하거나 중지하십시오. 즉, 프로그램이 TextSet2으로 이동하지 않습니다. 루프 밖에서 검사를 수행 한 다음 값을 호출하는 것을 생각했지만 StrFor loop 내에 선언되었습니다. 또한 루프 밖에서 Regex.match을 시도했지만, 내가 필요로하는 것은 그 루프에 현재 에있는 단어 maya의 첫 번째 발생에 대한 루프를 중지하는 것입니다. 그것을 성취 할 수있는 어떤 제안이나 생각?

+0

'첫 번째 Regex.match에서 루프 종료 및 다른 작업 수행 - [계속 명령문] 사용 (http://msdn.microsoft.com/en-us/library/801hyx6f(v=vs.110).aspx) – Habib

+0

이것은 이상한 셋업처럼 보입니다 ... 어딘가에서 텍스트를 가져 오는 것 같습니다 (예 : 데이터베이스)? 텍스트를 가져올 때 원하는 방식으로 단어를 세어 보지 않겠습니까? – mortb

답변

0

받는 유사한 새로운 For 루프를 구현 첫 번째 코드는 이 아닌지 확인하는 루프가 nothing 인 경우 trueInsert to databaseExit For을 사용하여 For loop을 종료하십시오.

-1

귀하가 제시 한 예와 귀하의 문제에 대한 설명으로 판단하면 귀하의 문제가 많다는 것을 알 수 있습니다. 최선의 방법은 옆에 앉아서 질문을하는 대신 좋은 소프트웨어 개발자를 찾는 것입니다.

그러나 Visual Basic에서 for 루프를 끝내려면 "Exit For"키워드를 사용해야하지만 이것은 가장 안쪽 루프에서만 벗어납니다. 모든 중첩 루프에서 벗어나려면 약간 더 복잡한 것이 필요합니다.

이 질문은 당신이 몇 가지 포인터를 제공해야합니다 : 코드 예제에 Breaking/exit nested for in vb.net

일부 주석에게 :

For Each item As GridViewRow In Me.GridViewSearchResult.Rows ' Ok 
    Dim txtStr as Label = DirectCast(item.FindControl("TextSet1"), Label) ' Ok 

    Dim Str = txtStr.Text.toString ' it would be better to declare the type of Str and leave out the .toString. Dim Str as String = txtStr.Text  

    For i as Integer = 0 to Str.Length - 1 ' For every character in the string, why? 
              ' Note where is i used within the loop? 

    Dim count As new Integer ' Declared afresh for every itteration of the 
          ' loop and then not used. Probably not what is wanted. 

    count = Regex.Matches (Str, "Maya", RegexOptions.IgnoreCase).Count ' Seems ok, but why repeat multiple times? 

    ' Neither count nor i have been used. 
    Next 
Next 

제안 된 솔루션 :

For Each item As GridViewRow In Me.GridViewSearchResult.Rows 
    Dim txtStr as Label = DirectCast(item.FindControl("TextSet1"), Label) 
    Dim Str as String = txtStr.Text  
    Dim count As new Integer = Regex.Matches(Str, "Maya", RegexOptions.IgnoreCase).Count 
    If count > 0 then 
     Call StoreInDb(count, str) 
     Exit For 
    End If 
Next 
+0

'Exit For'를 사용하고 있습니다. – HShbib

관련 문제