-1

我正在构建一个包含文本集的 Web 应用程序。

例如。

玛雅文明 - TextSet1

由于该地区的高度互动和文化传播,玛雅文明与其他中美洲文明有许多共同特征。文字、碑文和历法等进步并非起源于玛雅人。

玛雅影响 - TextSet2

然而,他们的文明充分发展了他们。从洪都拉斯、伯利兹、危地马拉和萨尔瓦多西部到远至墨西哥中部,距玛雅地区 1,000 多公里(620 英里),都可以检测到玛雅人的影响。在玛雅艺术和建筑中发现了许多外部影响,这些影响被认为是贸易和文化交流的结果,而不是直接的外部征服。

问题

每个TextSet都有一个唯一的索引,因为它们存储在Gridview. GridView我的代码通过首先存储TextSet1字符串中的第一个项目来遍历每个项目或索引。

然后,另一个For loop循环遍历该字符串,以count确定 word 有多少匹配项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

我想要实现的是,在开始时,程序首先处理or TextSet1,然后Str使用. 在第一次出现in 时,将整个集合存储在数据库中,然后退出或停止循环。这意味着程序不会移动到. 我想在循环外执行检查,然后调用这些值,但是在. 还尝试在循环外进行,但我需要的是在当前循环中第一次出现单词时停止循环。关于如何实现这一目标的任何建议或想法?countMayaStrMayaStrTextSet2StrFor loopRegex.matchmayaStr

4

2 回答 2

0

实现了一个For类似于第一个循环的新循环,并有一个while循环检查 if countis not nothing,然后 if true Insert to database,然后退出For loopusing Exit For

于 2013-01-09T13:45:31.590 回答
-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
于 2013-01-09T12:08:15.457 回答