-
Notifications
You must be signed in to change notification settings - Fork 0
/
strings.rb
152 lines (86 loc) · 4.07 KB
/
strings.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
texto1 = String.new #inicializa umas string vazia ""
texto2 = String.new("Texto inicial") #Passa o texto como argumento
puts texto2
texto3 = String("Inicializando sem usar .new") #Inicializando sem .new
puts texto3
texto4 = "String da forma mais simples!" #Jogando o texto diretamente na variável
puts texto4
puts "\nAspas simples ou duplas? As duas formas são permitidas. Mas, existem diferenças. Aspas duplas interpretam caracteres especiais como \\n gerando quebra de linha, por exemplo. Já entre aspas simples o \\n será mostrado como texto e não como quebra de linha.\n"
puts "\nCom aspas duplas: Lorem ipsum\nDolor..."
puts 'Com aspas simples: Lorem ipsum\nDolor...'
puts "\nheredoc - Here Ruby Documents"
puts "Essa funcionalidade nos permite criar blocos de texto que manterão a formatação(caracteres especiais, quebra de linha, tabs etc.."
texto5 = <<DOC
\nEsse texto está contido dentro de um heredoc
Essa é a segunda linha aqui temos um espaçamento
aqui temos tabulação..
\n
DOC
puts texto5
puts "texto5 é vazio? #{texto5.empty?}"
puts "qual o tamanho de texto5? #{texto5.size}"
puts "qual o tamanho de texto4? #{texto4.length}"
puts "\nPodemos concatenar strings como o operador +"
puts "O rato a roupa" + " " + "do rei de Roma"
puts "\nO operador + pode ser omitido! sensacional isso"
puts "Ser ou não ser" " " "eis a questão"
puts "\nPodemos ainda usar o operador <<" #de certa forma me incomoda a quantidade de opções que Ruby dá pra fazer a mesma coisa; to achando exagero!!
puts "\nKeep" << " " << "it simple, stupid."
puts "\nExiste ainda outra opção o método .concat :\\" #Ai é demais
puts "Ruby".concat("!")
puts "\nÉ possível congelar uma string de forma que ela não poderá ser alterada."
texto6 = "Esse texto esta congelado."
texto6.freeze #Consigo concatenar texto e também reatribuir novos valores :/ que congelamento é esse??? apenas o operador << é impedido
puts "\nAcessando elementod da string\n"
texto7 = "Bolo de cenoura com chocolate é muito bom!"
puts texto7
puts "tem morango!" if texto7["morango"] #retorna nil
puts "tem chocolate!" if texto7["chocolate"] #retorna chocolate
puts "\nPodemos ainda acessar uma fatia do texto: texto[inicio, qtd]"
puts texto7[20, 9] #a partir do index 20 pega 9 caracteres
puts "\nPodemos também pegar um grupo de caracteres: texto[inicio..fim]"
puts texto7[0..4]
puts "\nPara acessar o index de um elemento podemos fazer: texto.index(alvo)"
index_cenoura = texto7.index("cenoura")
puts "index de cenoura: #{index_cenoura}"
puts texto7[index_cenoura, 7] #a partir do index_cenoura pega 7 caracteres que é a quantidade de letras em 'cenoura'
puts "\nPara substituir uma palavra: texto[palavra] = nova_palavra"
texto7["cenoura"] = "morango"
puts texto7
texto8 = "O salgado mais doce dos doces é o doce de batata doce"
texto8["salgado"] = "doce"
puts texto8
puts "\ntemos ainda o método gsub que não altera a string original; para alterar a string original basta fazer gsub!"
texto9 = "Estudando Python"
puts texto9
puts texto9.gsub("Python", "Ruby")
puts texto9
texto9.gsub!("Python", "Ruby")
puts texto9
puts "\nO método replace substitui toda a string"
texto9.replace "Ruby método replace"
puts texto9
puts "\nÉ possível usar o operador de multiplicação * em strings"
texto10 = "Ruby" * 5
puts texto10
puts "\nInserindo textos"
texto11 = "Ruby!"
texto11.insert 0, "Aprendendo "
puts texto11
puts "\ntexto.chomp remove \\n do final da string" #pelo menos foi o que entendi!
puts "\nInvertendo strings\nUsamos o método reverse: texto.reverse"
texto12 = "ybuR"
puts texto12
texto12.reverse!
puts texto12
puts "\nConvertendo strings em arrays\n"
"ABCDEFGHIJKLMNOPQRSTUVXWYZ".split(//) #saída: ["A", "B", "C"...]
array1 = "No princípio Deus criou os céus e a terra".split(/ /)
puts array1
puts "\nO método .capitalize converte a primeira letra em maiúsculo: ruby.capitalize"
puts "ruby".capitalize
puts "\nPara converter o texto inteiro em maiúsculo ou minusculo usamos os métodos .upcase e .downcase"
texto14 = "Ruby"
puts texto14
puts texto14.upcase
puts texto14.downcase