Jump to content
jasb

Comparar parte de uma string noutra

Recommended Posts

jasb

Bom dia amigos!

Estou a ficar paranoico com isto, quero saber o seguinte e não encontro função para tal.

Tenho a string:
joao.maria@dominio.pt

e se (no caso a pwd) tiver a string:
j#%joao93ffM;#

quero saber quando isso acontece, porque "joao" existe no endereço de email.

Nem com string.compare, .contains, nada!
Não faço a minima como fazer, alguem tem ideia?

Share this post


Link to post
Share on other sites
ribeiro55

Olá jasb.

Tenta ser um pouco mais específico. Não estou a perceber qual é a relação entre as strings, nem o que procuras implementar, exactamente.
Será verificar se o user meteu parte do email na password ?

Dá um exemplo prático, para facilitar.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
jasb

Sérgio,

Exactamente, se o user colocar uma parte do que está no endereço quero bloquear, por ex:

sergio.ribeiro@domain.pt

e colocavas a password:

Sergio123

Quero proibir isso, porque "sergio" existe no endereço

Share this post


Link to post
Share on other sites
ribeiro55

Bom, há várias formas de fazer isto, cada uma com os seus compromissos.

Só para te empurrar para uma direção mais acertada, deixo-te aqui uma solução:

Private Function InString(target As String, input As String) As Boolean
    For Each d As String In "._-@".ToCharArray()
        target = target.Replace(d, ".")
    Next

    For Each part As String In target.Split(".")
        If input.ToLower() Like String.Format("*{0}*", part.ToLower()) Then Return True
    Next
    Return False
End Function
  1. Substituo todos os delimitadores por o ponto
  2. Em todos os elementos do split do email delimitado por pontos, faço um teste de likeness com o padrão *PARTE*, que é literalmente: qualquer string + PARTE + qualquer string
  3. Se algum destes testes lógicos for positivo, então contém. Se não, não contém.

Esta solução verifica apenas ocorrências de partes inteiras do endereço, por exemplo:

joao.maria@dominio.pt

Vai verificar a existência de:

  • joao
  • maria
  • dominio
  • pt

O exemplo completo:

Module Module1

    Sub Main()
        Dim email = "joao.ratao@grandaserver.pt"
        Dim passwords As String() = {
            "j9402!#!#",
            "kf3##!joao#!#",
            "1dkDAS!d3@@#!#",
            "dwwew!asad2dratao#!#",
            "af3grandaserver!#!#",
            "dwwew!pt#!#"
        }

        For Each pwd As String In passwords
            Debug.Print(
                String.Format("'{0}' contém partes do email? {1}", pwd, IIf(InString(email, pwd), "SIM", "NÃO"))
            )
        Next

        Console.ReadKey()

    End Sub

    Private Function InString(target As String, input As String) As Boolean
        For Each d As String In "._-@".ToCharArray()
            target = target.Replace(d, ".")
        Next

        For Each part As String In target.Split(".")
            If input.ToLower() Like String.Format("*{0}*", part.ToLower()) Then Return True
        Next
        Return False
    End Function

End Module

O que produz no output o seguinte:

'j9402!#!#' contém partes do email? NÃO
'kf3##!joao#!#' contém partes do email? SIM
'1dkDAS!d3@@#!#' contém partes do email? NÃO
'dwwew!asad2dratao#!#' contém partes do email? SIM
'af3grandaserver!#!#' contém partes do email? SIM
'dwwew!pt#!#' contém partes do email? SIM

Deves alterar a lógica de validação de acordo com a tua necessidade.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.