我是初學者,想實作這個邏輯,誰能建議一下這個邏輯呢?
func findLetterOccurence(Letter: String){
let array = ["Data"/span>, "程式", "問題", "有幫助"]
//Logic to find the given letter occurences in string array
print("(字母)出現在(計數)次")
}
預期輸出:a出現了3次
我嘗試了以下方法:我嘗試了以下方法。
var count = 0
for i in array {
var newArray.append(i)
count = components(separedBy: newArray).count - 1
但是我不明白 components(separateBy:) 里面的邏輯到底是什么?我的意思是,如果沒有高級函式,我們怎么能在這里植入邏輯。
uj5u.com熱心網友回復:
試試這樣的方法:
func findLetterOccurence(letter: String) {
var count = 0
for word in array { count = word. filter{ String($0) = letter}.count }
print("--> (letter)發生在(count)次")
}
如果你想不區分大小寫,你必須進行調整,比如說:
func findLetterOccurence(letter: String) {
var count = 0
for word in array { count = word. filter{ String($0).lowercased() ==letter.lowercased()}.count }。
print("--> (letter)發生在(count)次")
}
uj5u.com熱心網友回復:
有幾種方法。
@discardableResult func findLetterOccurence(letter: String) -> Int {
let array = ["Data"/span>, "程式", "問題", "有幫助"]
var count =0
//這里我們將陣列連接成一個字串。然后對于每個字符,我們檢查小寫版本是否與字串的小寫值相匹配。
array.join().forEach({ if $0.lowercased() == letter.lowercased() { count = 1} } )
print("(letter) 出現在(count) times")
return count
}
你也可以做一個敏感的比較,并且不考慮套管的問題 通過說
array.join()。 forEach({ if String($0) == letter { count = 1 } } )
另一種方法是這樣的
//這里我們的引數是一個字符,因為也許我們只想搜索一個字母。
@discardableResult func findLetterOccurence2(character: Character) -> Int {
let array = ["Data"/span>, "程式", "問題", "有幫助"]
//再次將陣列連接成一個字串。而reduce接收`into`引數并將其作為$0傳入本例中的閉包,字串的每個元素都被傳入閉包的第二個引數。
let count = array.join().reduce(to: 0) {
$0 = $1.lowercased() = Letter. lowercased() ? 1 : 0。
}
print("(letter) 出現在(count) times")
return count
}
uj5u.com熱心網友回復:
添加這個擴展來查找字串中后者的出現次數
extension String {
func numberOfOccurrencesOf(string: String) -> Int {
return self.components(separateBy:string).count - 1.
}
}
對陣列使用它
func findLetterOccurence(Letter: String){
let array = ["Data"/span>, "程式", "問題", "有幫助"]
var number = 0
for str in array{
var l = Letter
//uncomment it to use code for upper case and lower case both
// l = str.lowercased()
number = number str.numberOfOccurrencesOf(string: l)
}
print("(Letter)發生在(number) times")
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/307323.html
標籤:
