【问题标题】:String Split VB.Net字符串拆分 VB.Net
【发布时间】:2015-09-16 19:05:00
【问题描述】:

我有这个功能: (服务器是一个文本框字段)& (域是一个文本框字段)

Function foo As Boolean

    System.Web.HttpContext.Current.Session("site") = "server1.example.com"

If(server.Text.ToLower.Contains((System.Web.HttpContext.Current.Session("site").ToString.Substring("."))
 OR
domain.Text.ToLower.Contains((System.Web.HttpContext.Current.Session("site").ToString.Substring(".")))

        Return True
    Else
        Return False
    End If 
End Function

我知道这不起作用,因为我的字符串拆分返回一个字符串数组,无法与字符串“server.text”进行比较。但是我怎样才能重新编写这个比较,以便我可以判断文本框字符串是否包含会话变量?请记住,我不想对字符串值数组使用任何类型的迭代。

预期输出:

server.Text = server1
domain.Text = domain2
System.Web.HttpContext.Current.Session("site") = "server1.example.com"

foo = True // server1 = server1

【问题讨论】:

  • 你可以试试这样的:stackoverflow.com/questions/10735190/…
  • 那么,如果我没有使用 URI 资源,但仍想执行一个类似的字符串,那该怎么办……也许该字符串是用 first.last name 格式化的用户名?
  • 为什么不编写自己的方法来循环拆分字符串并返回您要查找的字符串?
  • 开启 OPTION STRICT
  • 为什么需要拆分字符串?为什么不直接在文本框中查找文本并将环境变量视为字符串?

标签: asp.net vb.net split


【解决方案1】:

SubString 在这里帮不了你。

如果你想检查每个 URI 部分是否包含在相应文本框中的内容中,你可以这样做:

Function foo() As Boolean
    'System.Web.HttpContext.Current.Session("site") = "server1.domain.com"
    Dim parts() As String = Split(System.Web.HttpContext.Current.Session("site").ToLower, ".")
    If server.Text.ToLower.Contains(parts(0)) OrElse domain.Text.ToLower.Contains(parts(1)) Then
        Return True
    Else
        Return False
    End If
End Function

如果您希望这些部分与任一相应的文本框完全匹配,则检查是否相等而不是 Contains

Function foo() As Boolean
    'System.Web.HttpContext.Current.Session("site") = "server1.domain.com"
    Dim parts() As String = Split(System.Web.HttpContext.Current.Session("site").ToLower, ".")
    If server.Text.ToLower = parts(0) OrElse domain.Text.ToLower = parts(1) Then
        Return True
    Else
        Return False
    End If
End Function

【讨论】:

    【解决方案2】:

    在如何选择 string.split 的选择性部分中找到了我的答案...

    ToString.Split(".")(0) ' 在数组位置 0 获取字符串

    ToString.Split(".")(1) ' 在数组位置 1 获取字符串

    ToString.Split(".")(2) ' 在数组位置 2 获取字符串

    所以

    server.Text.ToLower.Contains((System.Web.HttpContext.Current.Session("site").ToString.Substring("."c)(0)) 
    

    如果第一个数组元素包含在服务器字符串中,则返回 true

    【讨论】:

    • 这里要注意——如果你依次引用每一个,你会得到巨大的性能开销。你最好将String.Split 的输出分配给一个数组:Dim mySess() As String = System.Web.HttpContext.Current.Session("site").ToString.Split("."C)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多