Introdução ao Swift Set 2

Adquira o hábito de escrever juntos! Este é o 15º dia da minha participação no "Nuggets Daily New Plan·April Update Challenge", clique para ver os detalhes do evento .

O mesmo CharacterSet também é uma coleção de armazenamento eficiente de pontos de código Unicode (pontos de código), que geralmente é usado para determinar se um caractere contém caracteres em um subconjunto (como alfanuméricos ou decimalDigits). Ao contrário de IndexSet, CharacterSet não é um tipo de coleção , o nome é gerado ao importar do Objective-C

Atributos descrever
CharacterSet.alfanuméricos Uma combinação de letras e números, incluindo maiúsculas e minúsculas, excluindo os pontos decimais
CharacterSet.maiúsculasLetras Alfabeto, Capitalização, Categoria Lt
CharacterSet.decimalDígitos Números 0-9, sem ponto decimal
CharacterSet.whitespaces espaço
CharacterSet.whitespacesAndNewlines espaços e novas linhas
CharacterSet.letters Todas as letras em inglês, incluindo maiúsculas e minúsculas 65-90 97-122
CharacterSet.minúsculasLetras Letras inglesas minúsculas 97-122
CharacterSet.maiúsculasLetras Letras maiúsculas inglesas 65-90
CharacterSet.nonBaseCharacters caractere não base M*
CharacterSet.illegalCharacters 不 Caracteres compatíveis, sem caracteres definidos no padrão Unicode 3.2
CharacterSet.punctuationCharacters P* para pontuação, linhas de conexão, aspas, o que for
CharacterSet.symbols símbolos, incluindo tudo S*, operadores, símbolos de moeda, qualquer
CharacterSet.newlines Retorna um conjunto de caracteres contendo novas linhas, U+000A ~ U+000D, U+0085, U+2028 e U+2029
CharacterSet.symbols símbolos, incluindo tudo S*, operadores, símbolos de moeda, qualquer
invertido o conjunto de caracteres oposto. Por exemplo CharacterSet.whitespaces.inverted significa sem espaços
// 去掉首尾空格
 let example =  " abc ".trimmingCharacters(in: CharacterSet.whitespaces)
 print(example)
// abc

//验证密码是否只包含数字
let password = "123"
print(password.rangeOfCharacter(from: CharacterSet.decimalDigits.inverted) == nil)
// true

//url编码
  let url = URL(string: "http://www.api.test.com".addingPercentEncoding(withAllowedCharacters: CharacterSet.urlHostAllowed)!)

// 自定义
let str2 = "#/%/<>?@"
let custom = CharacterSet(charactersIn: "#").inverted
let result = str2.addingPercentEncoding(withAllowedCharacters: custom) ?? ""
print(result) //输出 %23/%/<>?@
复制代码
  • CharacterSet.urlHostAllowed: caracteres de escape são "#%/<>?@^`{|}
  • CharacterSet.urlPathAllowed: caracteres de escape são "#%;<>?[]^`{|}
  • CharacterSet.urlUserAllowed: caracteres de escape são #%/<>?@^`{|}
  • CharacterSet.urlQueryAllowed: caracteres de escape são "#%<>[]^`{|}
  • CharacterSet.urlPasswordOs caracteres de escape permitidos são "#%/:<>?@[]^`{|}

CharacterSet.urlHostAllowed contém todos os caracteres que não precisam ser transcodificados, que podem ser verificados com dois códigos:

let unicode = "1".unicodeScalars.flatMap{ $0 }[0]
print(CharacterSet.urlHostAllowed.contains(unicode)) //输出TRUE
复制代码

Usando coleções em encerramentos

extension Sequence where Element: Hashable {
func unique() -> [Element] {
var seen: Set<Element> = []
return filter { element in
if seen.contains(element) {
   return false

   } else {
         seen.insert(element)
         return true
       }
    }
  }
}
[1,2,3,12,1,3,4,5,6,4,6].unique() // [1, 2, 3, 12, 4, 5, 6]
复制代码

O método acima nos permite encontrar todos os elementos únicos na sequência e manter sua ordem original pelos elementos que devem satisfazer a restrição Hashable. No fechamento que passamos para filtrar, usamos uma variável externa vista cujo valor podemos acessar e modificar dentro do fechamento

Acho que você gosta

Origin juejin.im/post/7087468223133646862
Recomendado
Clasificación