我想为字符串做一个子字符串扩展,我尝试了2种方法,但不成功:
extension String
{
func substringToFirstChar(of char: Character) -> String
{
let pos = self.range(of: String(char))
let subString = self[..<pos?.lowerBound]
return String(subString)
}
}
Run Code Online (Sandbox Code Playgroud)
要么
extension String
{
func substringToFirstChar(of char: Character) -> String
{
let pos = self.index(of: char)
let subString = self[..<pos]
return String(subString)
}
}
Run Code Online (Sandbox Code Playgroud)
xcode提示错误: 无法 在" let subString = self [... "行中推断出通用参数'Self'.
怎么做 ?
range(of/ index(of返回一个可选项.您必须在范围表达式中展开可选项
extension String
{
func substringToFirstChar(of char: Character) -> String?
{
guard let pos = self.range(of: String(char))?.lowerBound else { return nil }
// or guard let pos = self.index(of: char) else { return nil }
let subString = self[..<pos]
return String(subString)
}
}
Run Code Online (Sandbox Code Playgroud)
或者 - 避免可选 - 如果没有匹配则返回未更改的字符串
extension String
{
func substringToFirstChar(of char: Character) -> String
{
guard let pos = self.range(of: String(char))?.lowerBound else { return self }
// or guard let pos = self.index(of: char) else { return self }
let subString = self[..<pos]
return String(subString)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7591 次 |
| 最近记录: |