删除特定字符后的字符串的其余部分
我想知道如何在特定字符后删除字符串的其余部分。我知道如何替换字符串的出现,但不知道如何在特定字符后删除字符串的其余部分。例如删除特定字符后的字符串的其余部分
let names = ["Tommy-normal", "Bob-fat", "Jack-skinny", "Rob-obese"]
for x in names {
print(x.replacingOccurrences(of: "-", with: " "))
}
相反,我想只删除自带字符串后剩下-所以它只是打印出汤米,鲍勃 ,Jack and Rob。
将不胜感激任何帮助。
一种可能的方案是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
}
谢谢瓦迪亚,它的工作原理。你会不会像Sulthan提供的那样知道如何去做?在那里你找到那个字符的索引,把这个前缀加到那个索引 –
这个(第二个例子)实际上就是Sulthan建议的方式。 – vadian
啊好吧谢谢你Vadian。现在我知道两种方式来做到这一点。 :) –
你可以分成数组,并采取如下的第一个元素:
var names = ["Tommy-normal", "Bob-fat", "Jack-skinny", "Rob-obese"]
for name in names {
let arr = name.components(separatedBy: "-")
print(arr[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); }
要小心,当字开头 “ - ”。
我希望这可以帮助你!
如果你想使用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
查找索引那个字符,把这个前缀加到那个索引上。 – Sulthan
如果您可以提供示例代码,我们将非常感激。按照你的方式去做。 –