Foxtable(狐表)用户栏目专家坐堂 → 在集合中如何确定包含某个字符的字段位置?


  共有4317人关注过本帖树形打印复制链接

主题:在集合中如何确定包含某个字符的字段位置?

帅哥哟,离线,有人找我吗?
ZJZK2018
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
在集合中如何确定包含某个字符的字段位置?  发帖心情 Post By:2023/10/10 18:41:00 [显示全部帖子]

在集合中如何确定包含某个字符的字段位置?

Dim nms As New List(Of String)
Names.Add( "HGF")
Names.Add("电冰箱")
Names.Add("洗衣机")
Names.Add( "电视机")
Names.Add( "AAA")
Names.Add( "BBB")
Output.Show(nms.Indexof(nms.Contains("电视"))) 

需求是:找出含有“电视”二个字符的“电视机”字段的位置?

 回到顶部
帅哥哟,离线,有人找我吗?
ZJZK2018
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2023/10/10 20:44:00 [显示全部帖子]

教程中是包含“电视机”  ,而我需要的是“电视”二个字符,一楼的代码出错了       
老师请指教??不知道怎么做?

[此贴子已经被作者于2023/10/10 20:50:03编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
ZJZK2018
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2023/10/10 21:21:00 [显示全部帖子]

解决了:
Dim nms As New List(Of String)
nms.Add( "HGF")
nms.Add("电冰箱")
nms.Add("洗衣机")
nms.Add( "电视机")
nms.Add( "AAA")
nms.Add( "BBB")
For Each st As String In nms
    If st.Contains("电视") Then
     msgbox(nms.Indexof(st))
    End If
Next

 回到顶部
帅哥哟,离线,有人找我吗?
ZJZK2018
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2023/10/10 21:43:00 [显示全部帖子]

谢谢

 回到顶部
帅哥哟,离线,有人找我吗?
ZJZK2018
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2023/10/10 22:07:00 [显示全部帖子]

蓝色和红色部分是连续字符串,但字符串长度不一定,如何删除红色部分字符串?谢谢

温州市域铁路S3线附属配套工程(瑞安段)S3线瑞安段土建工程施工SG5标段施工SG5标段      改成:温州市域铁路S3线附属配套工程(瑞安段)S3线瑞安段土建工程施工SG5标段

诸暨市浦阳江治理三期工程施工Ⅰ标(高湖南渠出口至船塘湖段)施工Ⅰ标(高湖南渠出口至船塘湖段)      改成:诸暨市浦阳江治理三期工程施工Ⅰ标(高湖南渠出口至船塘湖段)

(非重点)天台县石梁镇Y010乡道至慈圣村乌坑农村道路项目(甬金衢上高速公路罗汉岭隧道配套工程)(非重点)天台县石梁镇Y010乡道至慈圣村乌坑农村道路项目(甬金衢上高速公路罗汉岭隧道配套工程)施工  改成:(非重点)天台县石梁镇Y010乡道至慈圣村乌坑农村道路项目(甬金衢上高速公路罗汉岭隧道配套工程)施工


[此贴子已经被作者于2023/10/10 22:07:54编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
ZJZK2018
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2023/10/12 9:04:00 [显示全部帖子]

规律:
要找出的字符串条件如下:
1、二个字符串必须是连续的,如施工SG5标段施工SG5标段
2、字符串长度不确定
3、要找出的字符串长度最小为:2个,最长为整个字符串的一半。


下面代码出,提示字符串长度不够
For i As Integer = 2 To str.Length *0.5 
    For n As Integer = 0 To str.Length Step i
        Dim s As String = str.Substring(n,i)               
    Next
Next

 回到顶部
帅哥哟,离线,有人找我吗?
ZJZK2018
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2023/10/12 9:31:00 [显示全部帖子]

温州市域铁路线瑞安段土建工程施工SG5标段施工SG5标段 在这个字符串中每隔3个或5个插入一个@字符,如何做
变成:温州市@域铁路@线瑞安@段土建@工程施@工SG@5标段@施工S@G5标@段
[此贴子已经被作者于2023/10/12 9:32:08编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
ZJZK2018
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2023/10/12 12:14:00 [显示全部帖子]

蓝老师:
我的需求是下面这个字符串顺序遍历一次,再倒序遍历一次,都加到集合里,然后根据集合相邻相同字符找出来

Dim s As String = "温州市域铁路线瑞安段土建工程施工SG5标段施工SG5标段"
Dim lst As New List(Of String)
For  ii As Integer = 0 To s.Length - 1
    Output.Show(ii)
    nm = ii
Next
  
For i As Integer = 0 To s.Length - 1 Step 7          '需求:::如何把这个7的数字变成ii这个循环,ii为2,3,4...到(s.Length - 1)的一半值 。   2、这个是顺序,倒序时会出错
    If i + 7 < s.Length - 1 Then
        lst.Add(s.Substring(i, 7))
    Else
        lst.Add(s.Substring(i))
    End If
Next

Dim ret As String = String.Join("@", lst.ToArray)
Output.Show(ret)

For  n As Integer = 1 To lst.count
    If lst(n) = lst(n-1)
        msgbox(lst(n))
    End If
Next
1、红色代码出错,错在哪里?

[此贴子已经被作者于2023/10/12 12:29:53编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
ZJZK2018
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2023/10/19 0:34:00 [显示全部帖子]

老师上面代码是顺序进行,但倒序怎么办?

Dim s As String = "温州市域铁路线瑞安段土建工程施工SG5标段施工SG5标段"

Dim lst As New List(Of String)

For  ii As Integer = 2 To s.Length - 1

    For i As Integer = 0 To s.Length - 1 Step ii

        If i + ii < s.Length - 1 Then

            lst.Add(s.Substring(i, ii))

        Else

            lst.Add(s.Substring(i))

        End If

    Next

Next

Dim ret As String = String.Join("@", lst.ToArray)

Output.Show(ret)

 

For  n As Integer = 1 To lst.count -1

    If lst(n) = lst(n-1)

        msgbox(lst(n))

    End If

Next



 回到顶部
帅哥哟,离线,有人找我吗?
ZJZK2018
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2023/10/20 17:46:00 [显示全部帖子]

下面倒序没反应了??
Dim s As String = "温州市域铁路线瑞安段土建工程施工SG5标段施工SG5标段"
Dim lst As New List(Of String)
For  ii As Integer = s.Length - 1 To 2
    For i As Integer = s.Length - 1 To 0 Step -ii
        If i + ii < s.Length - 1 Then
            lst.Add(s.Substring(i, ii))
        Else
            lst.Add(s.Substring(i))
        End If
    Next
Next

Dim ret As String = String.Join("@", lst.ToArray)
Output.Show(ret)

 回到顶部
总数 20 1 2 下一页