Esse emoji, possui como código o valor \u{270b}, quando utlizado em na String, ele possui a interpretação de um único caracter:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
let emoji = "\u{270b}" //✋ | |
emoji.count // 1 |
Porém temos como resultado a imagem ou quando utilizamos um caractere como uma letra com acento ã e que podemos representar da seguinte forma:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
var character = "\u{00E3}" //ã | |
//ou podemos fazer uma combinação do unicode, da seguinte forma: | |
character = "\u{61}\u{303}" //ã |
Mas o que é o Unicode?
É um padrão que permite a interpretação/manipulação dos computadores ao texto. Os mais conhecidos são UTF-8 e UTF-16, sendo UTF (Formato de Transformação Unicode que em inglês é Unicode Transformation Format) e o número em seguida tem como objetivo informar o número de bits por código.
O UTF-8 é o mais usado e compatível com o código ASCII. Conheça a lista do unicode através do site - http://www.unicode.org/Public/UCD/latest/charts/CodeCharts.pdf
Uma das mudanças em relação a String é em relação a composição através de um lista de caracteres e até o Swift 3.0 você deveria acessar da seguinte forma:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
let string = "Olá!" | |
for c in string.characters { | |
print("\(c)") //O,l,á,! | |
} |
Agora a String é realmente tratada como uma lista de caracteres e você consegue percorrer os caracteres da seguinte forma com Swift 4:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
let string = "Olá!" | |
for c in string { | |
print("\(c)") //O,l,á,! | |
} |
Várias mudanças já foram feitas, na própria documentação constam 131 modificações e 87 novas funcionalidades na API.
Substring
A Substring representa uma parte da string e implementa o mesmo protocolo StringProtocol. O ganho nisso foi em relação a memória, pois agora a memória é compartilhada quando se trata da string original e ainda possui a mesma interface que a String.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
let string = "Olá! 👋" | |
let index = string.index(of: "!")! | |
let substring = string[...index] //Olá! | |
//Vocâ também pode criar uma string inicializando com uma substring, basta utilizar o inicializador: | |
let newString = String(substring) |
Esse artigo foi uma breve introdução do que serão os próximos relacionados a String e Substring.