我正在构建一个包含文本集的Web应用程序。
例如。
玛雅文明 - TextSet1
由于该地区的高度互动和文化传播,玛雅文明与其他中美洲文明有许多共同特征。写作,金石和日历等进步并非源于玛雅人;
Maya影响力 - TextSet2
然而,他们的文明充分发展了它们。从洪都拉斯,伯利兹,危地马拉和萨尔瓦多西部可以发现玛雅人的影响,远离墨西哥中部,距离玛雅地区超过1000公里(620英里)。玛雅艺术和建筑中存在许多外部影响,这些影响被认为是贸易和文化交流的结果,而不是直接的外部征服。问题
每个 TextSet 都有一个唯一索引,因为它们存储在Gridview
中。我通过首先将第一个项GridView
存储在字符串中来遍历TextSet1
中的每个项目或索引。
然后,另一个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
我想要实现的是,在开始时,程序首先处理TextSet1
或Str
,然后使用count
计算单词{{1}的出现次数在Maya
中。在Str
中第一次出现Maya
时,将整个集存储在数据库中,然后退出或停止循环。这意味着该程序不会移动到Str
。我想在循环外执行检查然后调用值,但TextSet2
在Str
内声明。还尝试在循环外部执行For loop
,但我需要的是在当前循环中的Regex.match
中第一次出现单词maya
时停止循环。有关如何实现这一目标的任何建议或想法?
答案 0 :(得分:0)
实施了与第一个类似的新For
循环,并有一个while
循环,用于检查count
是否不是nothing
,如果true
{ {1}},然后使用Insert to database
退出For loop
。
答案 1 :(得分:-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