Junte todos os elementos em uma matriz de string com palavra extra

Nancy P

Eu tenho uma série de cordas como esta

let arrayOfString = ["Nancy", "Peter", "Kevin"]

e eu quero unir todos os elementos do array com uma vírgula e um espaço entre eles.

let joinResult = arrayOfString.joined(separator: ", ")

o que me dá

Nancy, Peter, Kevin

minha dúvida é se é possível adicionar a palavra "e" antes do último elemento se array.count> 2. Nesse caso, será

Nancy, Peter, and Kevin
//if arrayOfString = ["Nancy"], only shows Nancy with no comma and space

Obrigado!

Ielyamani

Aqui está uma solução

let arrayOfString = ["Nancy", "Peter", "Kevin"]

let joinedString = arrayOfString.dropLast().joined(separator: ", ")
                   + (arrayOfString.count > 1 ? " and " : "")
                   + (arrayOfString.last ?? "")

print(joinedString)   //Nancy, Peter and Kevin

Você também pode definir o acima como uma função

func joinedNames(from array: [String]) -> String {
    return array.dropLast().joined(separator: ", ")
           + (array.count > 1 ? " and " : "")
           + (array.last ?? "")
}

e teste assim:

joinedNames(from: ["Nancy", "Peter", "Kevin"])  //"Nancy, Peter and Kevin"
joinedNames(from: ["Nancy", "Peter"])           //"Nancy and Peter"
joinedNames(from: ["Nancy"])                    //"Nancy"
joinedNames(from: [])                           //""

Se você precisa da vírgula Oxford, aqui está a solução:

func joinedNamesWithOxfordComma(from array: [String]) -> String {
    return array
        .enumerated()
        .map {(index, element) in
            if index == 0 {
                return element
            } else if index <= array.count - 2 {
                return ", " + element
            } else if array.count > 2 {
                return ", and " + element
            } else {
                return " and " + element
            }
        }.joined()
}

joinedNamesWithOxfordComma(from: ["Nancy", "Peter", "Kevin"])  //"Nancy, Peter, and Kevin"
joinedNamesWithOxfordComma(from: ["Nancy", "Peter"])           //"Nancy and Peter"
joinedNamesWithOxfordComma(from: ["Nancy"])                    //"Nancy"
joinedNamesWithOxfordComma(from: [])                           //""

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Junte os primeiros N caracteres de cada palavra em uma string com os pandas

Junte todos, exceto os primeiros elementos em uma lista para criar uma string

Junte todos os elementos da matriz em um elemento

Junte e agrupe os elementos de uma lista em uma string de acordo com certas condições

Combinação múltipla de todos os elementos de uma string em uma matriz

Imprime os elementos de uma matriz com uma vírgula entre os elementos exceto a última palavra

Matrizes dentro de uma matriz: como empurrar todos os elementos para frente em um com javascript

A maneira mais rápida de encontrar todos os elementos únicos em uma matriz com Cython

postgresql Agregar matrizes em uma única matriz com união de todos os elementos

Como digitalizar todos os elementos de uma matriz com theano?

Como digitalizar todos os elementos de uma matriz com theano?

Encontre todos os elementos correspondentes em uma matriz de objetos

Somando todos os elementos de uma matriz unidimensional em Julia

Total de todos os elementos inteiros correspondentes em uma matriz

Encontre todos os elementos correspondentes em uma matriz de objetos

Como validar todos os elementos de uma matriz em stubMatchers

Transforme todos os elementos de um array string [] em uma única string com linq

Todos os outros elementos em uma matriz

(Programação C) Como insiro string em uma matriz de caracteres e, em seguida, imprimo todos os elementos dessa matriz?

Encontre todos os caracteres com "[string]" e torne-os em uma matriz de dados

Não é possível declarar todos os elementos em uma única matriz com matriz sem nome de identificador

Como combinar todos os elementos em uma matriz com todos os elementos em várias outras matrizes no Powershell

Como verificar se todos os elementos de uma matriz JSON começam com uma string específica?

Verifique se uma coluna de string do Dataframe do pandas contém todos os elementos fornecidos em uma matriz

Loop por meio de uma matriz JavaScript e, em seguida, pegar todos os elementos e torná-los uma única string

Como sobrecarregar + operador em uma classe de matriz de modelo para adicionar todos os elementos com o mesmo índice juntos

Junte os itens de uma lista com o sinal '+' em uma string

Consulta DynamoDB / Dynamoose com base em TODOS os elementos em uma matriz

Existe uma maneira de selecionar todos os elementos de uma dimensão ao indexar com matriz uma matriz multidimensional em R?

TOP lista

quentelabel

Arquivo