Swift2.0 中的String(二):基本操作
Swift中的字符串,第二篇,基本操作。其他的几篇传送门(GitHub打不开链接的同学请自行把地址github改成gitcafe,或者直接去归档里找:-P):
- Swift2.0 中的String(一):常用属性
- Swift2.0 中的String(二):基本操作
- Swift2.0 中的String(三):类型转换
- 编码转换(TBD)
我的练习源代码可以在 这里 看到
首先,我们要记得使用字符串最常用的两个参数:下标(Index)和范围(Range),几乎所有API都要用到它们
let offset = str.startIndex.advancedBy(2)// offset: 3rd char
let range = Range(start: str.startIndex.advancedBy(3), end: str.endIndex.advancedBy(-2))// range: 3..<6, "345"
强制类型转换
let n = Int(str)!
String("the number is \(n)")
String(format:"%.2f, %i", 9.1, 304)
内容反转
String(str.characters.reverse())
删除和部分删除
str.removeRange(range)
str.removeAtIndex(offset)
String(str.characters.dropFirst())
String(str.characters.dropFirst(3))
String(str.characters.dropLast())
String(str.characters.dropLast(3))
//以上对character的操作不改变原来的值!
// 删除头尾空白字符
" I love you ".stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
// 删除头尾字符集
" I love you, too!".stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: ",. !"))
//清空
str.removeAll()
获取固定位置的子串
str.substringToIndex(offset)
str.substringFromIndex(offset)
str.substringWithRange(range)
str[range]
分割
st = "<123, test2,???> <测试: 数据 .>"
// 用固定字符分割
str.componentsSeparatedByString(" ")
// 用固定字符集分割
str.componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: ", ."))
过滤/查找替换
使用替换字符串的API,让替换的目标字符串为空即为过滤
// 替换固定位置子串
str.stringByReplacingCharactersInRange(range, withString: "!!!")
// 查找所有匹配并替换/过滤
str.stringByReplacingOccurrencesOfString("???", withString: "~")
str.stringByReplacingOccurrencesOfString(" ", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
// 过滤字符集合(分割后合并)
let arr = str.componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString:"-<>"))
arr.joinWithSeparator("")
合并/拼接
s1 + s2 + s3
str.appendContentsOf("123")
str.stringByAppendingString("000") //不改变原值!
str.stringByAppendingFormat("- num %d ", 100) //不改变原值!
// 以固定字符串为分隔符拼接
[str, str, str].joinWithSeparator("\n")
插入
str.insert(" ", atIndex: offset)
str.insertContentsOf(" hello".characters, at: offset)
str.replaceRange(Range( start:offset, end: offset ), with: "???OK!!!")
判断前缀或后缀
str.hasPrefix("01")
str.hasSuffix("567")
比较字符串
s1.characters.elementsEqual(s2.characters)
str.characters.elementsEqual("01234567".characters)
s1 == s2
"111" < "222"
匹配字符串
str.rangeOfString("efg")
str.rangeOfString("efg", options: NSStringCompareOptions.CaseInsensitiveSearch, range: nil)
固定位置的部分替换
str.replaceRange(range, with: "test_for_replace")
str.stringByReplacingCharactersInRange(range, withString: "哈哈:smile:Tes\nt")
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2015-10-29 使用storyboard实现页面跳转,简单的数据传递
2015-10-29 iOS viewController添加导航条以及返回跳转选择
2015-10-29 IOS开发中UIBarButtonItem上按钮切换或隐藏实现案例
2014-10-29 命令行运行android模拟器
2013-10-29 Use a layout_width of 0dip instead of fill_parent for better performance
2013-10-29 Android中getLocationOnScreen和getLocationInWindow 获取屏幕大小
2013-10-29 Android Scroller类的详细分析