2015-09-16 2 views
0

У меня есть эта функция: (сервер является полем текстового поля) & (домен представляет собой поле текстового поля)Строка Split VB.Net

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 = сервер1
domain.Text = domain2
System.Web.HttpContext.Current.Session ("Сайт") = "server1.example.com"

Foo = True // server1 = сервер1

+0

вы можете попробовать что-то вроде этого: http://stackoverflow.com/questions/10735190/parsing-string-for-domain-hostname –

+0

Так что, если я не был» t, используя ресурс URI и все еще хотел заготовьте аналогичную строку ... может быть, если строка была вместо usernames формируется first.last имя? – Christopher

+0

Почему бы не написать собственный метод, который выполняет цикл по разделительной строке и возвращает строку, которую вы ищете? –

ответ

0

Найдено мой ответ в том, чтобы принимать селективные частей 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)) 

возвращает истину, если первый элемент массива содержится в строке сервера

+0

Просто обратите внимание здесь - вы получите огромную служебную нагрузку, если будете обращаться к каждому из них по очереди. Вам гораздо лучше назначить вывод 'String.Split' в массив:' Dim mySess() As String = System.Web.HttpContext.Current.Session ("site"). ToString.Split ("." C) ' – Paul

0

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