Ruby – Como Saber se uma String Contém uma Substring?

A classe String em Ruby vem com vários métodos internos de pesquisa de valores dentro de uma String, mas não existe nenhum com um nome direto como “contém” ou “pesquisa “, que deixaria explícita a capacidade de procurar e encontrar substrings, como a palavra ” Olá ” dentro da String ” Olá Mundo”. Este tipo de pesquisa existe, obviamente, mas está escondida dentro do método “index “.

Ruby – Pesquisando Strings

Para pesquisar uma substring dentro uma string, basta informarmos o índice e a quantidade de caracteres que desejamos considerar a partir desse índice:

str = "Olá Mundo"

str[5,5] # “Mundo”

Em conjunto com o código descrito anteriormente, ou melhor, antes mesmo de o utilizar, devemos pesquisar com antecedência qual a exata posição da palavra “Mundo”, para depois a recuperar de dentro da String. Caso seja necessário pesquisar a posição dessa palavra, temos como opção utilizar o método index

str.index(/mundo/) #nil

O código acima retorno “nil”, ou nulo, informando que a palavra desejada não existe dentro da String. Isso acontece porque esta busca está considerando somente a palavra escrita em caixa baixa. Devemos então tornar essa busca case insensitive. Para fazer isto, acrescentamos a “i” ao final de nossa busca anterior:

str.index(/mundo/i) #5

A busca retornou o índice onde a primeira letra da palavra se encontra dentro da String. Utilizando o primeiro código deste artigo, conseguimos a palavra que desejamos.

Ruby – Pesquisando Strings com o método scan

Também pode ser utilizado o método scan. Neste método declara-se um padrão que deve ser pesquisado utilizando-se regex (expressões regulares) como argumento do método. O retorno é uma array com o valor da busca:

a = "Olá Mundo"
a.scan(/w+/)        #=> ["Olá", "Mundo"]
a.scan(/.../)        #=> ["Olá", " Mu", "ndo"]

Você conhece outra forma de verificar se uma String contém uma Substring no Ruby? Compartilhe o seu jeito na área de comentários abaixo!

Se você quiser explorar mais coisas sobre Ruby, você pode dar uma olhada na nossa seção de videos! Abaixo temos alguns exemplos:

Você também pode seguir alguns dos canais que fazem transmissões em Ruby, como os abaixo:

excid3

zoer

Outro jeito bacana de descobrir coisas interessantes sobre Ruby é acessar nossa página de projetos!

Dr. Michael J. Garbade

I, Dr. Michael J. Garbade is the co-founder of the Education Ecosystem (aka LiveEdu), ex-Amazon, GE, Rebate Networks, Y-combinator. Python, Django, and DevOps Engineer. Serial Entrepreneur. Experienced in raising venture funding. I speak English and German as mother tongues. I have a Masters in Business Administration and Physics, and a Ph.D. in Venture Capital Financing. Currently, I am the Project Lead on the community project -Nationalcoronalvirus Hotline I write subject matter expert technical and business articles in leading blogs like Opensource.com, Dzone.com, Cybrary, Businessinsider, Entrepreneur.com, TechinAsia, Coindesk, and Cointelegraph. I am a frequent speaker and panelist at tech and blockchain conferences around the globe. I serve as a start-up mentor at Axel Springer Accelerator, NY Edtech Accelerator, Seedstars, and Learnlaunch Accelerator. I love hackathons and often serve as a technical judge on hackathon panels.

View Comments

Recent Posts

Blockchain in Elections: A Leap Toward Transparent Democracy

In 2024 we're witnessing a critical point in democratic technology: the integration of blockchain and…

3 weeks ago

Win Big with Our Amazon Fire Max 11 & AirPods Pro Giveaway!

We’re thrilled to announce an exciting opportunity for you to win not one but two…

2 months ago

Unleashing Potential: How Education Ecosystem Transforms Learning into Real-World Success

Acquiring practical skills is crucial for career advancement and personal growth. Education Ecosystem stands out…

4 months ago

The Role of Artificial Intelligence in Modern Software Development

Artificial Intelligence (AI) has been making significant strides in various industries, and the software development…

7 months ago

Highest Stable Coin Yields – (W16 – 2024)

Another week to bring you the top yield platforms for three of the most prominent…

8 months ago

LEDU Token OTC Trading

If you hold a large volume of LEDU tokens above 1 million units and wish…

9 months ago