首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Swift 基本语法05-"String"

Swift 基本语法05-"String"

作者头像
用户1890628
发布2018-05-10 14:51:53
8600
发布2018-05-10 14:51:53
举报
文章被收录于专栏:Objective-CObjective-C

一个iOS开发初级菜鸡.png

Swift 基本语法01-Swift简介 Swift 基本语法02-"let"和"var" Swift 基本语法03-"if let"和"guard let" Swift 基本语法04-"switch"和"for" Swift 基本语法06-数组和字典

1. 字符串简介

1> String是一个结构体,性能更高

  • String目前具有了绝大多数NSString的功能
  • String支持直接遍历

2> NSString是一个OC对象,性能略差

2. 字符串的遍历
let str = "王红庆大帅逼"
for c in str.characters {
    print(c)  // 输出:王,红,庆,大,帅,逼
}
3. 字符串的长度

1> 返回指定编码的对应的字节数量

let str1 = "hello world"
let str2 = "hello world你好"

print(str1.lengthOfBytes(using: .utf8)) // 输出:11
print(str2.lengthOfBytes(using: .utf8)) // 输出:17

2> 返回的字符的个数(推荐使用)

let str = "hello world你好"

print(str.lengthOfBytes(using: .utf8))  // 输出:17
// 返回字符的个数
print(str.characters.count)             // 输出:13

3> 使用as进行类型转换

let str = "hello world你好"

// 经过'as'转换后,ocStr类型变为'NSString'类型
let ocStr = str as NSString
print(ocStr.length)     // 输出:13
4. 字符串的拼接
let name = "王红庆"
let age = 18

let str = "\(name)\(age)"
print(str)              // 输出:王红庆18
5. 带可选项的字符串的拼接
let name = "王红庆"
let age = 18
let title: String? = "iOS开发大菜逼"
    
// 下面这样写会报警告:String interpolation produces a debug description for an optional value; did you mean to make this explicit?
let str = "\(name)\(age)\(title)"
/**
 * 解决'警告'和输出'Optional'的办法
 * 1.对'title'强行解包(这里不推荐不推荐)--->(title!)
 * 2.使用'??'-------------------------->(title ?? "")
 */
let str = "\(name)\(age)\(title!)"      // 输出:王红庆18iOS开发大菜逼
let str = "\(name)\(age)\(title ?? "")" // 输出:王红庆18iOS开发大菜逼
print(str)                              // 输出:王红庆18Optional("iOS开发大菜逼")
6. CGPoint类型的也可以直接拼接,再也不用写NSStringFromCGPoint(point: CGPoint)的方法了
let name = "王红庆"
let point = CGPoint(x: 100, y: 100)
let str = "\(name)\(point)"
print(str)              // 输出:王红庆(100.0, 100.0)
7. 格式化字符串,相当于[NSString stringWithFormat:(NSString *)format]
let h = 8
let m = 9
let s = 7

let dateStr01 = "\(h):\(m):\(s)"
print(dateStr01)            // 输出->8:9:7

let dateStr02 = String(format: "%02d:%02d:%02d", h, m, s)
print(dateStr02)            // 输出->08:09:07
8. 取字符串子串

1> 建议用NSString作为中转,因为Swift取子串的方法一直在优化

let str = "王红庆大帅逼"
let ocStr = str as NSString
let string = ocStr.substring(with: NSMakeRange(2, 4))
print(string)       // 输出:庆大帅逼(从第2个'庆'字往后取4位)

2> swift里从第n位取到最后一位(如果有这种需求,推荐使用这种)

let str = "王红庆大帅逼"
// '阿祖'无实际意义,仅仅是占位用的
let string = str.substring(from: "阿祖".endIndex)
print(string)             // 输出:庆大帅逼

3> swift里取希望得到的字符串(暂时不推荐,还是转成OC字符串易懂一些)

let str = "王红庆大帅逼"
    
guard let range = str.range(of: "红庆") else {
    print("没有找到字符串")            // 如果'str'字符串中没有'红庆',那么就输出:没有找到字符串
    return
}
print(range)
print(str.substring(with: range))   // 输出:红庆
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.05.17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 字符串简介
  • 2. 字符串的遍历
  • 3. 字符串的长度
  • 4. 字符串的拼接
  • 5. 带可选项的字符串的拼接
  • 6. CGPoint类型的也可以直接拼接,再也不用写NSStringFromCGPoint(point: CGPoint)的方法了
  • 7. 格式化字符串,相当于[NSString stringWithFormat:(NSString *)format]
  • 8. 取字符串子串
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档