2017-04-15 161 views
0

我想知道如何在特定字符後刪除字符串的其餘部分。我知道如何替換字符串的出現,但不知道如何在特定字符後刪除字符串的其餘部分。例如刪除特定字符後的字符串的其餘部分

let names = ["Tommy-normal", "Bob-fat", "Jack-skinny", "Rob-obese"] 
for x in names { 
print(x.replacingOccurrences(of: "-", with: " ")) 

}

相反,我想只刪除自帶字符串後剩下-所以它只是打印出湯米鮑勃Jack and Rob

將不勝感激任何幫助。

+0

查找索引那個字符,把這個前綴加到那個索引上。 – Sulthan

+0

如果您可以提供示例代碼,我們將非常感激。按照你的方式去做。 –

回答

2

一種可能的方案是map與閉合

var names = ["Tommy-normal", "Bob-fat", "Jack-skinny", "Rob-obese"] 

names = names.map { string -> String in 
    if let range = string.range(of: "-") { 
     return string.substring(to: range.lowerBound) 
    } 
    return string 
} 

或者

names = names.map { string -> String in 
    if let index = string.characters.index(of: "-") { 
     return string.substring(to: index) 
    } 
    return string 
} 
+0

謝謝瓦迪亞,它的工作原理。你會不會像Sulthan提供的那樣知道如何去做?在那裏你找到那個字符的索引,把這個前綴加到那個索引 –

+0

這個(第二個例子)實際上就是Sulthan建議的方式。 – vadian

+0

啊好吧謝謝你Vadian。現在我知道兩種方式來做到這一點。 :) –

0

你可以分成數組,並採取如下的第一個元素:

var names = ["Tommy-normal", "Bob-fat", "Jack-skinny", "Rob-obese"] 

for name in names { 
let arr = name.components(separatedBy: "-") 
     print(arr[0]) 
} 

打印:

湯米

鮑勃

傑克

羅布

0

你可以試試這個:

 
let names = ["Tommy-normal", "Bob-fat", "David", "Jack-skinny", "Rob-obese"]; 

for (let name of names) { 

    let index = name.indexOf("-"); 

    if (index >= 0) name = name.substring(0, index); 

    console.log(name); 
} 

要小心,當字開頭 「 - 」。

我希望這可以幫助你!

0

如果你想使用Sulthan的建議(vadian的第二種方法)來做到這一點,但是想讓它稍微更通用一些,你可以創建一個函數來提取字符串的第一部分直到分隔符,然後使用:

func firstPart(of aString: String, separator: String) -> String { 
    if let range = aString.range(of: separator) { 
    return aString.substring(to: range.lowerBound) 
    } 
    return aString 
} 



let names = ["Tommy", "Bob-fat", "Jack-skinny", "Rob-obese"] 
let firstParts: [String] = names.map { 
    firstPart(of: $0, separator: "-") 
} 
print("firstParts = \(firstParts)") 

這給出結果:

firstParts = ["Tommy", "Bob", "Jack", "Rob"] 

你也可以寫你的原始數組映射到元組的名稱部分和「形態」的部分代碼:

let tuples = names 
    .map{$0.components(separatedBy: "-")} 
    .map{(name:$0[0], morphology: $0.count > 1 ? $0[1] : "unkown morphology")} 

tuples.forEach{ print($0.name + " is " + $0.morphology) } 

隨着我的版本的數據,在這裏我刪的「湯米 - 正常」的「 - 正常」的一部分,以確保代碼來處理丟失的後綴,我得到:

Tommy is unkown morphology 
Bob is fat 
Jack is skinny 
Rob is obese 
相關問題