Jump to content
Sign in to follow this  
Portalcake

Comparando string com Array

Recommended Posts

Meu problema é o seguinte, estou tentando fazer uma comparação de strings que seja exata e não parcial.

O código é o seguinte:

/// <summary>/// Client attempts to create a new character./// </summary>/// <param name="packet"></param>void OnCreateCharacter( PacketReader packet )     {          if ( !IsAuthenticated ) return;          string characterName = packet.ReadUTF16();          int characterClass = packet.ReadInt32();          // WIP          var array = new[] { "Arta", "Dacy", "Yuki" };          if ( array.Any(s => characterName.IndexOf( s ) >= 0) )          {               Send( PacketGenerator.CharacterCreate( 1, null ) );              return;          }          // O resto do código não importa […]

Quando eu tento criar um personagem com o nome 'Arta', por exemplo. Maravilha, a criação é impedida, até esse ponto ele funciona exatamente como eu quero. O problema começa quando eu tento criar um personagem com um nome que contenha 'Arta' também, por exemplo 'xCraftArtaRX' e neste caso, pelo fato do nome conter 'Arta', a criação do personagem acaba sendo impedida.

Então eu quero saber se há alguma forma de bloquear apenas e somente o nome que esteja na array, como 'Arta'; 'Dacy'; 'Yuki'; por exemplo, apenas eles e nada além deles mesmo que estes nomes façam parte de outro nome maior, como o exemplo acima.

Obrigada~

Share this post


Link to post
Share on other sites

Ponha uma verificacao em relacao ao tamanho da palavra.

Arta tem 4 letras, e xCraftArtaRX tem 12 letras. Se o nome que o cara escolheu tiver o tamanho diferente das strings que voce ta comparando, obvio que ele nao escolheu uma dessas strings proibidas.

  • Love 1

Share this post


Link to post
Share on other sites

Checar o tamanho da string realmente ajudou, obrigada.

Mas com base nisso consegui chegar á uma forma mais eficiente que busca pela palavra exata.

var nmCheck = ln1.Intersect( characterName.Split(), StringComparer.OrdinalIgnoreCase ).Any();if ( nmCheck == true ){    Send( PacketGenerator.CharacterCreate( 1, null ) );    return;}

O que também deu uma resumida no código, variantes de Arta por exemplo como aRTa/arta/etc também são bloqueadas por causa da adição de: StringComparer.OrdinalIgnoreCase;

Resolvido~

Share this post


Link to post
Share on other sites

Aviso automático:

Esse tópico foi fechado por um moderador.

Motivo: Resolvido

Se você não concorda com esta ação, vá até o Tribunal de Pequenas Causas.

Equipe Cronus Emulator.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

Seja bem vindo ao Cronus-Emulator.
É sempre um prazer te-lo conosco.
Você pode visualizar nossas áreas de suporte para encontrar suas soluções sem a necessidade de se registrar!
Registrando em nossa comunidade, você poderá conhecer mais sobre nosso projeto, criar tópicos, responder tópicos existentes, baixar milhares de recursos em nosso sistema de downloads, participar de nossa comunidade, customizar seu perfil e muito mais... Se você já possui uma conta, faça seu login - ou crie uma conta. Também temos integração com Google+ e Facebook.

×
×
  • Create New...