Лучший способ найти количество вхождений определенного символа в строку - PullRequest
0 голосов
/ 04 сентября 2018

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

String(appWindow.title.count - appWindow.title.replacingOccurrences(of: "x​", with: String()).count)

Есть ли способ сделать это с помощью более простой команды?

Я пытался разделить его, но он всегда говорит 1, даже когда символа нет.

Ответы [ 4 ]

0 голосов
/ 04 сентября 2018

отличных ответов

я пошел с

appWindow.title.components(separatedBy: "​x").count - 1
0 голосов
/ 04 сентября 2018

Вы можете использовать reduce, он увеличивает результат ($0), если найден символ ($1)

let characterCount = appWindow.title.reduce(0) { $1 == "x" ? $0 + 1 : $0 }
0 голосов
/ 04 сентября 2018

Почему вы можете просто сделать что-то подобное?

let str = "Hello, playground"
let characters = CharacterSet(charactersIn: "o")

var count = 0
for c in str.unicodeScalars {
    if characters.contains(c) {
        count += 1
    }
}

print("there are \(count) characters in the string '\(str)'")

Но, как указал @Leo Dabus, это будет работать только для простых символов Юникода. Вот альтернатива, которая будет работать для подсчета любого отдельного символа:

for c in str {
    if c == "o" {
        count += 1
    }
}
0 голосов
/ 04 сентября 2018

Одно из возможных решений:

let string = "xhjklghxhjkjjklxjhjkjxx"

print(string.filter({ $0 == "x" }).count)
// prints: 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...