本片文章只对String字符串做了一些简单扩展,目的是简化截取字符传中的某个字符或者某段字符串。文章末尾附上自己的一个小Demo。
1.获取某个索引位置的字符
以下两个方法是从前往后查询某个索引对应的字符
/// 获取字符串某个索引的字符(从前往后)
/// - Parameter index: 索引值 是从0开始算的
/// - Returns: 处理后的字符串
func getCharAdvance(index: Int) -> String {
assert(index < self.count, "哦呵~ 字符串索引越界了!")
let positionIndex = self.index(self.startIndex, offsetBy: index)
let char = self[positionIndex]
return String(char)
}
/// 获取字符串第一个字符
/// - Returns: 处理后的字符串
func getFirstChar() -> String {
return getCharAdvance(index: 0)
}
以下两个方法是从后往前查询某个索引对应的字符
/// 获取字符串某个索引的字符(从后往前)
/// - Parameter index: 索引值
/// - Returns: 处理后的字符串
func getCharReverse(index: Int) -> String {
assert(index < self.count, "哦呵~ 字符串索引越界了!")
//在这里做了索引减1,因为endIndex获取的是 字符串最后一个字符的下一位
let positionIndex = self.index(self.endIndex, offsetBy: -index - 1)
let char = self[positionIndex]
return String(char)
}
/// 获取字符串最后一个字符
/// - Returns: 处理后的字符串
func getLastChar() -> String {
return getCharReverse(index: 0)
}
2.获取字符串中某段字符串
/// 获取某一串字符串按索引值
/// - Parameters:
/// - start: 开始的索引
/// - end: 结束的索引
/// - Returns: 处理后的字符串
func getString(startIndex: Int, endIndex: Int) -> String {
let start = self.index(self.startIndex, offsetBy: startIndex)
let end = self.index(self.startIndex, offsetBy: endIndex)
return String (self[start ... end])
}
/// 获取某一串字符串按数量
/// - Parameters:
/// - startIndex: 开始索引
/// - count: 截取个数
/// - Returns: 处理后的字符串
func getString(startIndex: Int, count: Int) -> String {
return getString(startIndex: startIndex, endIndex: startIndex + count - 1)
}
/// 截取字符串从某个索引开始截取
/// - Parameter startIndex: 开始索引
/// - Returns: 截取后的字符串
func subStringFrom(startIndex: Int) -> String {
return getString(startIndex: startIndex, endIndex: self.count - 1)
}
/// 截取字符串(从开始截取到想要的索引位置)
/// - Parameter endIndex: 结束索引
/// - Returns: 截取后的字符串
func subStringTo(endIndex: Int) -> String {
return getString(startIndex: 0, endIndex: endIndex)
}
好了,本片文章就先分享到这里,有兴趣的同学可以查看Demo,如果您喜欢,别忘了给个Star哟,我也会不定期更新一些比较实用的String扩展。欢迎大家给我留言,说说您们自己的看法,我们一起进步,大家加油!!!