Количество слов в строке Swift для вычисления количества слов

Я хочу сделать процедуру, чтобы узнать, сколько слов есть в строке, разделенной пробелом, запятой или другим символом. А затем добавьте общее количество позже.

Я делаю средний калькулятор, поэтому хочу получить общее количество данных, а затем добавить все слова.

обновление: Xcode 8.2.1 • Swift 3.0.2

let sentence = "I want to an algorithm that could help find out how many words are there in a string separated by space or comma or some character. And then append each word separated by a character to an array which could be added up later I'm making an average calculator so I want the total count of data and then add up all the words. By words I mean the numbers separated by a character, preferably space Thanks in advance" let wordList = sentence.components(separatedBy: .punctuationCharacters).joined().components(separatedBy: " ").filter{!$0.isEmpty} print(wordList) // [I, want, to, an, algorithm, that, could, help, find, out, how, many, words, are, there, in, a, string, separated, by, space, or, comma, or, some, character, And, then, append, each, word, separated, by, a, character, to, an, array, which, could, be, added, up, later, Im, making, an, average, calculator, so, I, want, the, total, count, of, data, and, then, add, up, all, the, words, By, words, I, mean, the, numbers, separated, by, a, character, preferably, space, Thanks, in, advance]" print(wordList.count) // 79 

 extension String { var words: [String] { var words: [String] = [] enumerateSubstrings(in: startIndex.. 

Swift 2.x

 let sentence = "I want to an algorithm that could help find out how many words are there in a string separated by space or comma or some character. And then append each word separated by a character to an array which could be added up later I'm making an average calculator so I want the total count of data and then add up all the words. By words I mean the numbers separated by a character, preferably space Thanks in advance" let wordList = sentence.componentsSeparatedByCharactersInSet(NSCharacterSet.punctuationCharacterSet()).joinWithSeparator("").componentsSeparatedByString(" ").filter{$0 != ""} print(wordList) // [I, want, to, an, algorithm, that, could, help, find, out, how, many, words, are, there, in, a, string, separated, by, space, or, comma, or, some, character, And, then, append, each, word, separated, by, a, character, to, an, array, which, could, be, added, up, later, Im, making, an, average, calculator, so, I, want, the, total, count, of, data, and, then, add, up, all, the, words, By, words, I, mean, the, numbers, separated, by, a, character, preferably, space, Thanks, in, advance]" print(wordList.count) // 79 

Вопрос состоит в том, чтобы получить количество слов, но если вам нужны слова, как они есть, вы можете использовать это расширение, адаптированное по методу, предложенному Мартином R в этом ответе , также иметь возможность справляться с апострофами:

 extension String { var words: [String] { var result:[String] = [] enumerateSubstringsInRange(characters.indices, options: .ByWords) { result.append($0.substring!) } return result } } 
 let sentences = "Let there be light!" let separated = split(sentences) { contains(",.! ", $0) }.count println(separated) // prints out 4 (if you just want the array, you can omit ".count") 

Если у вас есть определенное условие пунктуации, которое вы хотите использовать, вы можете использовать этот код. Также, если вы предпочитаете использовать только быстрые коды :).

Возможно, вы захотите попробовать componentsSeparatedByCharactersInset :

 let s = "Let there be light" let c = NSCharacterSet(charactersInString: " ,.") let a = s.componentsSeparatedByCharactersInSet(c).filter({!$0.isEmpty}) // a = ["Let", "there", "be", "light"] 

Вы можете попробовать следующие варианты:

 let name = "some name with, space # inbetween" let wordsSeparatedBySpaces = name.componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()) let wordsSeparatedByPunctuations = name.componentsSeparatedByCharactersInSet(NSCharacterSet.punctuationCharacterSet()) let wordsSeparatedByHashChar = name.componentsSeparatedByString("#") let wordsSeparatedByComma = name.componentsSeparatedByString(",") let total = wordsSeparatedBySpaces.count + wordsSeparatedByPunctuations.count + wordsSeparatedByHashChar.count + wordsSeparatedByComma.count println("Total number of separators = \(total)") 
  • Шестнадцатеричная строка в байтовый массив в C
  • C # Разделение строк?
  • Быстрый алгоритм поиска подстрок в строке
  • Преобразование строкового представления списка в список
  • Как использовать переменные в одиночных кавычках?
  • Как я могу начать новую активность Android с помощью строки?
  • Использование strtok () в цикле в C?
  • Java String.indexOf и пустые строки
  • Как можно угадать кодировку строки в Perl?
  • Можно ли запускать сценарии Node.js без вызова `node`?
  • Как мне обойти проблему «» в sqlite и c #?
  • Давайте будем гением компьютера.